VBA - Lekce 9 - Pole

Dnes se podíváme na použití polí. Nejdříve však co to takové pole v programování znamená. Pod pojmem pole si představíme údaje stejného datového typu sdružených pod jednu proměnnou, můžeme také chápat jako vystupující v programu pod jedním jménem. Jedná se tedy o setříděnou množinu prvků stejného datového typu.

Index Hodnoty
1 28
2 59
3 7
4 88
5 22

 

Pole lze chápat jako tuto tabulku. První sloupec reprezentuje index, v 2. sloupci jsou pak konkrétní data. Celou tuto tabulku pak chápeme jako pole o velikosti 5. K jednotlivým řádkům přistupujeme pomoci indexu následovně. Obecná syntaxe pole(1) pričemž číslo v závorce je index v tomto případě tedy pracujeme s hodnotou 28, která je uložena pod indexem 1. Pro lepší predstavivost si můžete představit každý řádek jako novou proměnnou. Pole by pak bylo poskládáno s několika obyčejných proměnných.

Ukážeme si to na příkladu, kdy chceme uchovat pět různých čísel. Dříve bychom k takovému to úkonu byli nuceni použít deset různých proměnných, nyní nám stačí pouze jedno pole o velikosti 5.

Sub cisla()
Dim cislo(5) As Integer
  cislo(1) = InputBox("zadej libovolné číslo které chceš uchovat do pole.")
  cislo(2) = InputBox("zadej libovolné číslo které chceš uchovat do pole.")
  cislo(3) = InputBox("zadej libovolné číslo které chceš uchovat do pole.")
  cislo(4) = InputBox("zadej libovolné číslo které chceš uchovat do pole.")
  cislo(5) = InputBox("zadej libovolné číslo které chceš uchovat do pole.")
  vypis = Str(cislo(1)) + " " + Str(cislo(2)) + " " + Str(cislo(3)) + " " + Str(cislo(4)) + " " + Str(cislo(5))
  MsgBox vypis
End Sub

Teď si rozebereme samotný kód pro jeho pochopení.

Dim cislo(5) As Integer – tady na tomto řádku deklarujeme pole. Poznáme to podle specifické závorky dopsané za název pole(proměnné) číslo určuje velikost pole tzn. Kolik prvků do něj jsme schopni zapsat. Při překročení nám to bude hlásit chybu, proto když už chceme pracovat s těmito poli, doporučuje si zvolit číslo s dostatečnou rezervou nebo použít dynamické pole o těch však ještě později.

cislo(1) = InputBox("zadej libovolné číslo které chceš uchovat do pole.")

A teď již to důležitější a to samotný zápis do pole. Jak můžeme vidět tento řádek je nám již znám z předchozích lekcí, jde o klasický vstup dat od uživatele a jejich uložení, avšak zde data nevstupují do klasické proměnné ale do pole.  Jelikož do pole můžeme vkládat více dat je třeba je charakterizovat indexem (pod kterým budou evidovány) to je to číslo v závorce.

Pojďme si ukázat zápis do pole pomocí cyklu For..Next:

Sub priklad()
Dim cislo(5) As Integer
Dim vypis As String

  For i = 1 To 5
    cislo(i) = InputBox("zadej libovolné číslo které chceš uchovat do pole.")
  Next i

  For i = 1 To 5
    vypis = vypis & " " & Str(cislo(i))
  Next i

  MsgBox vypis
End Sub

cislo(i) = InputBox("zadej libovolné číslo které chceš uchovat do pole."). Zde se jedná o klasický zápis dat do pole, je zde ale však jedna změna oproti minule.  Místo indexu daného konstantou (pevně daným číslem), tak jak jsme to udělali v minulém příkladu, se nám zde vyskytuje proměnná. V tomto příkladu je to proměnná zastupující funkci tzv. počítadla. Pro osvěžení počítadlo při každém průchodu cyklem zvětší svou hodnotu. Takže při prvním průchodu cyklem má hodnotu 1. Z toho plyne, že zadávané číslo se zapíše do pole s indexem 1. Při druhém průchodu bude již index 2 a tak dále. Této samé „finty“ využijeme i u výpisu.

vypis = vypis & " " & Str(cislo(i)) .Pojďme si ukázat jak to funguje. Při prvním průchodu není v proměnné výpis nic. Slovy by se to dalo říct tedy takto nic=nic vypiš mezeru a vypiš číslo s indexem 1. Při druhém průchodu již máme v proměnné výpis uložené číslo z minulého průchodu a bude to tedy vypadat takto: číslo s indexem 1 = číslo s indexem 1 vypiš mezeru a vypiš číslo s indexem 2. Na předposledním řádku máme msgbox s proměnnou výpis a mělo by to vypadat například takto “ 2 5 6 10 4“. Nevýhodou tohoto příkladu je, že před prvním číslem vypíše mezeru. Toto by se však dalo velice snadno ošetřit podmínkou. Toto si však zkuste sami za domácí úkol.

 

Average: 5 (1 hlas)

Komentáře

2

Pěkné stránky, pomohly mi. Děkuji Marně ale sháním na netu pomoc - Jak udělat výpis hodnot do nekonečného formuláře? Víte někdo jak?

Co přesně myslíte pojmem nekonečný formulář?