7. Lecke – Tömbök

Tömbök VBA-ban

Ahhoz, hogy profi makrókat írjunk az Excelben és ezáltal majd automatizálni tudjunk, szükséges megnéznünk még egy fontos programozási fogalmat. Ez pedig a tömb.

– Plusz infó –
A számítástudományban a tömb (angolul array) olyan adatszerkezet, amelyet nevesített elemek csoportja alkot, melyekre sorszámukkal (indexükkel) lehet hivatkozni. Vektornak is nevezik, ha egydimenziós, mátrixnak esetenként, ha többdimenziós. A legtöbb programozási nyelvben minden egyes elemnek azonos adattípusa van és a tömb folytonosan helyezkedik el a számítógép memóriájában.
Forrás: Wikipédia

Képzeljünk el egy szekrényt, aminek a példa kedvéért mondjuk 6 polca van. Mindegyik polcon tárolunk valamit:

Tömb- polc

Ha én azt mondom, hogy 5. polc, vagy másképp megfogalmazva polc(5), akkor te tudni fogod, hogy a telefont értem alatta. De ha azt mondom, hogy a 2. polc, vagy polc(2), akkor pedig a kisautóra gondolok.

A tömbök segítenek nekünk egyszerre több elemmel dolgozni. Nem kell mindenre külön változót írni, mert létrehozunk egy tömböt és belerakunk mindent.

Arra viszont figyelni kell, hogy egy tömbben csak azonos típusú elemek lehetnek. Azaz nem lehet az, hogy az “1. polcon” egy Integer van, a másodikon pedig egy String. (Persze egy számot szövegként is lehet tárolni, de akkor elveszti szám jellegét, nem fogsz tudni vele műveleteket végrehajtani.)

A tömb felépítése

Ahhoz, hogy tömbbel dolgozzunk ugyanúgy szükséges deklaráni azt, mint egy sima változót. Ez így néz ki:

Dim polc(1 To 6) As String

Azaz a változóknál már megtanult Dim, majd a tömbünk neve, amit zárójelben követ két szám, köztük egy To. Ez nagyon leegyszerűsítve, azt jelenti, hogy hány eleme legyen a tömbünknek. Azonban, mivel szinte minden esetben 1-es lesz az első szám, így rövidíteni is lehet, oly módon, hogy csak az utolsó számot írjuk le zárójelben, azaz ténylegesen azt a számot, hogy hány eleme legyen a tömbnek. Azaz jelen esetben ez a két kifejezés megegyezik egymással: (1 To 6) = font color=”#68b42e”>(6)
A sor végén pedig egy As szócska után meghatározzuk a tömb típusát, úgy mint egy változót. Vagyis milyen típusú adatok legyenek a tömbben.

Tömb elemeinek meghatározása
Ha definiáltuk a tömbünket, akkor adjunk értékeket is a tömb egyes elemeinek. Ezt teljesen olyan, mint egy változónál, azzal a különbséggel, hogy a tömb neve után zárójelben odaírjuk az index számát, azaz, hogy éppen melyik “polcra” akarunk tenni értéket.

polc(1) = “Alma”

A teljes kódunk így néz ki:

Sub Makró1()

   Dim Polc(1 To 6) As String

   Polc(1) = "Alma"
   Polc(2) = "Kisautó"
   Polc(3) = "Ceruza"
   Polc(4) = "Könyv"
   Polc(5) = "Telefon"
   Polc(6) = "Kulcs"

   'Írjuk ki párbeszédablakba a Tömb 4. elemét:
   MsgBox Polc(4)

End Sub

Oké, ez eddig nem túl bonyolult. Ezért csavarjunk egyet.

A tömbök index számát természetesen lehet helyettesíteni változóval is.

Sub Makró1()

   'Létrehozom a tömbömet
   Dim Polc(1 To 6) As String

   'Létrehozok egy új változót ami a tömb index számait fogja jelölni
   Dim Polc_szama As Integer

   'Példa kedvéért most az 1-es számot adom neki
   Polc_szama = 1

   'Behelyettesítem a változót, és így adok értéket a tömb 1. elemének
   Polc(Polc_szama) = "Alma"

   'Kiírom a tömb első elemét:
   MsgBox Polc(Polc_szama)

End Sub

Nézzünk egy másik példát.

Legyenek számok a tömb értékek. És adjuk össze két tömb 2. elemeit.

Sub Makró1()

   'Létrehozok két tömböt
   Dim Tomb1(1 To 3) As Integer
   Dim Tomb2(1 To 3) As Integer

   'Értéket adok mindkét tömb 2. elemének
   Tomb1(2) = 120
   Tomb2(2) = 500

   'Összeadom mindkét tömb második elemét és kiíratom
   MsgBox Tomb1(2) + Tomb2(2)

End Sub

Tudunk az értékeivel műveleteket végrehajtani, tudjuk az egyes elemeit változóként kezelni. Innentől már csak egy lépés, hogy összekössük egy ciklussal. Ezt a gyakorlati részben meg is mutatom.

Gyakorlati feladat

1. “A” oszlopba, A1-től A10-ig vegyünk fel számokat!
2. Feladatunk, hogy egy gomb megnyomására, ezen számok kétszeresét felvegyük egy 10 elemű tömbbe. Tehát a tömb első eleme az A1 értékének duplája legyen, az utolsó eleme pedig a A10 duplája.
3. Ha az elemeket felvettük a tömbbe, írjuk ki egy párbeszédablakba, hogy “Sikeresen betettük a tömbbe”.
4. Ezután a tömb elemeit írjuk ki a “B” oszlopba. Azaz tömb első eleme legyen a B1, utolsó pedig a B10.

Használjunk benne ciklust!

A kód:

Sub Makró1()

   'Létrehozzuk a tömbünket
   Dim tomb(10) As Integer

   'Egy ciklus segítségével végigmegyünk a tömbünkön és a szükséges cellákon
   For i = 1 To 10

      'A1-től A10-ig betesszük a tömb megfelelő helyére az aktuális cella értékének 
      dupláját
      tomb(i) = Cells(i, 1).Value * 2

   Next

   'Kiírjuk, hogy a tömbben vannak már az értékek
   MsgBox "Sikeresen betettük a tömbbe"

   'Egy másik ciklusban a tömbből visszaírjuk a B oszlopba az értékeket
   For j = 1 To 10

      Cells(j, 2).Value = tomb(j)

   Next
End Sub

Összefoglalás:

– Megtanultuk, mik azok a tömbök
– Létre tudjuk hozni azokat, tudunk értéket adni az egyes elemeinek
– Tudunk a tömb elemeivel műveleteket végrehajtani

Mennyire találtad hasznosnak ezt cikket?
[Összes szavazat: 2 Átlag értékelés: 5]