Excel VBA tömbök: Típusok és használatuk példával

⚡ Okos összefoglaló

Az Excel VBA tömbök azonos adattípusú, kapcsolódó értékek csoportját tárolják egyetlen név alatt, amelyekhez egy index segítségével lehet hozzáférni. Ez az oldal a statikus és dinamikus tömböket, az egy-, két- és többdimenziós tömböket, a deklarációs szintaxist és egy italok betöltésére szolgáló, kidolgozott példát ismertet.

  • 📦 Tömb koncepció: Egyetlen elnevezett memóriahely, amely számos, azonos adattípusú értéket tartalmaz, indexszel elválasztva.
  • 🎯 Előnyök: A tömbök csoportosítják a kapcsolódó adatokat, csökkentik a változók számát, és gyorsabbá teszik az adatok lekérését és rendezését.
  • 📌 Statikus tömb: Fix mérettel deklarálva, például Dim ArrayMonth(12) As String, ha az elemek száma ismert.
  • 🔄 Dinamikus tömb: Üresnek deklarálva a Dim ArrayMonth() függvénnyel, majd később méretezve a ReDim segítségével, ha az elemek száma ismeretlen.
  • 📐 Méretek: Egy tömb egy, két vagy több indexet használ egyetlen lista, táblázat vagy többszintű adat modellezésére.
  • 🧪 Működő példa: Egy parancsgomb négy italnevet tölt be egy tömbből a munkalap celláiba a Sheet1.Cells használatával.

Excel VBA tömbök

Mi az a VBA Array?

A tömb egynél több érték tárolására képes memóriahely. Az értékeknek azonos adattípusúnak kell lenniük. Tegyük fel, hogy kedvenc italainak listáját egyetlen változóban szeretné tárolni, ehhez használhatja a VBA tömböt.

Tömb használatával a kapcsolódó értékekre azonos néven hivatkozhat. Index vagy alsó index segítségével megkülönböztetheti őket egymástól. Az egyes értékekre az Excel VBA tömb elemeiként hivatkozunk. A 0 indextől a legmagasabb indexértékig szomszédosak.

Ez az oktatóanyag feltételezi, hogy használja Microsoft Excel verzió 2013. A tudás továbbra is vonatkozik a többi verzióra Microsoft Excel is.

Mik a tömbök előnyei?

Tömbkód írása előtt érdemes megérteni, miért érdemes tömböket használni. Az alábbiakban a VBA tömbfüggvények által kínált előnyök közül néhányat ismertetünk.

  1. Csoportosítsa a logikailag összefüggő adatokat – tegyük fel, hogy a tanulók listáját szeretné tárolni. Használhat egyetlen tömbváltozót, amelynek külön helyei vannak a tanulói kategóriáknak, pl. óvoda, általános, középiskola, középiskola stb.
  2. A tömbök megkönnyítik a karbantartható kód írását. Ugyanazon logikailag összefüggő adatok esetén lehetővé teszi egyetlen változó definiálását ahelyett, hogy egynél több változót definiálna.
  3. Jobb teljesítmény – a tömb meghatározása után gyorsabban lehet lekérni, rendezni és módosítani az adatokat.

Tömbtípusok a VBA-ban

A VBA kétféle tömböt támogat, nevezetesen;

  • Statikus – Az ilyen típusú tömbök rögzített, előre meghatározott számú tárolható elemmel rendelkeznek. A statikus tömb adattípusának méretét nem lehet megváltoztatni. Ezek akkor hasznosak, ha olyan ismert entitásokkal szeretne dolgozni, mint a napok száma a héten, a nem stb.Például: Dim ArrayMonth(12) As String
  • Dinamikus – Az ilyen típusú tömbökben nincs rögzített előre meghatározott számú tárolható elem. Ezek akkor hasznosak, ha olyan entitásokkal dolgozik, amelyek számát nem tudja előre meghatározni.Például: Dim ArrayMonth() As Variant

Miután megtudta, melyik típus illik az adataihoz, a következő lépés az egyes típusokhoz tartozó deklarációs szintaxis.

Szintaxis a tömbök deklarálásához

Statikus tömbök

A deklarálás szintaxisa STATIKUS a tömbök a következők:

Dim arrayName (n) as datatype

ITT,

Code Akció
Dim arrayName (n) adattípus
  1. Deklarál egy arrayName nevű tömbváltozót, amelynek mérete n és adattípusa. A méret a tömb által tárolható elemek számát jelenti.

Dinamikus tömbök

A deklarálás szintaxisa DINAMIKUS a tömbök a következők:

Dim arrayName() as datatype
ReDim arrayName(4)

ITT,

Code Akció
Dim arrayName () adattípus
  1. Az elemek számának megadása nélkül deklarál egy arrayName nevű tömbváltozót
Redim arrayName(4)
  1. Megadja a tömb méretét a tömb meghatározása után.

Tömb méretei

Egy tömb lehet egydimenziós, kétdimenziós vagy többdimenziós.

  • Egy dimenzió: Ebben a dimenzióban a tömb csak egy indexet használ. Például minden korosztályból számos ember.
  • Két dimenzió: Ebben a dimenzióban a tömb két indexet használ. Például minden osztályban több tanuló. Ehhez minden osztályban osztályok száma és tanulólétszám szükséges
  • Többdimenziós: Ebben a dimenzióban a tömb kettőnél több indexet használ. Például a nappali hőmérséklet. ( 30, 40, 20).

A tömb használata az Excel VBA-ban

Az elmélet elsajátítása után egy tömböt működőképessé tehetünk egy valódi munkafüzetben. Létrehozunk egy egyszerű alkalmazást. Ez az alkalmazás egy Excel-táblázatot tölt fel egy tömbváltozóból származó adatokkal. Ebben a VBA tömb példában a következőket fogjuk tenni.

  • Újat csinálni Microsoft Excel-munkafüzet, és mentse el Excel-makró-kompatibilis munkafüzetként (*.xlsm)
  • Adjon hozzá egy parancsgombot a munkafüzethez
  • Állítsa be a parancsgomb nevének és feliratának tulajdonságait
  • Az Excel lapot feltöltő VBA programozása

Végezze el ezt a gyakorlatot lépésről lépésre,

1. lépés – Hozzon létre egy új munkafüzetet

  1. Nyisd ki Microsoft Excel
  2. Mentse az új munkafüzetet VBA Arrays.xlsm néven

2. lépés – Parancsgomb hozzáadása

Jegyzet: Ez a rész feltételezi, hogy ismeri az excel felület létrehozásának folyamatát. Ha nem ismeri, olvassa el az oktatóanyagot VBA Excel űrlapvezérlő és ActiveX-vezérlő. Megmutatja, hogyan kell létrehozni a felületet

  1. Adjon hozzá egy parancsgombot a laphoz

Használja a tömböt az Excel VBA-ban

  1. Állítsa be a name tulajdonságot cmdLoadBeverages értékre
  2. Állítsa be a felirat tulajdonságot Italok betöltése értékre

A grafikus felhasználói felületnek most a következőnek kell lennie

Használja a tömböt az Excel VBA-ban

3. lépés – Mentse el a fájlt

  1. Kattintson a Mentés másként gombra
  2. Válassza az Excel Makró-kompatibilis munkafüzetet (*.xlsm) az alábbi képen látható módon

Használja a tömböt az Excel VBA-ban

4. lépés – Írja be a kódot

Most megírjuk az alkalmazásunk kódját

  1. Kattintson a jobb gombbal az Italok betöltése gombra, és válassza ki a nézet kódot
  2. Adja hozzá a következő kódot a cmdLoadBeverages kattintási eseményéhez
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

ITT,

Code Akció
Dim Drinks (1-től 4-ig) Stringként
  • Egy Drinks nevű tömbváltozót deklarál. Az első tömb indexe 1, az utolsó tömb indexe 4.
Italok (1) = „Pepsi”
  • A Pepsi értéket rendeli az első tömbelemhez. A másik hasonló kód ugyanezt teszi a tömb többi eleméhez.
Sheet1.Cells(1, 1).Value = „Kedvenc italaim”
  • A My Favourite Beverages értéket írja az A1 cellacímbe. A Sheet1 a lapra, a Cells(1,1) pedig az 1. sorszámra és az 1. oszlopra (B) hivatkozik.
Lap1.Cellák(2, 1).Érték = Italok(1)
  • Az 1-es indexű tömbelem értékét az 1. oszlop második sorába írja

Alkalmazásunk tesztelése

Miután a kód elkészült, az utolsó lépés a gomb futtatása és annak ellenőrzése, hogy a tömb kitölti-e a lapot. Válaszd ki a fejlesztő fület, és győződj meg arról, hogy a Tervezési mód gomb „ki” van kapcsolva. A jelzőfény fehér hátteret mutat, nem pedig színes (zöldes) hátteret. (Lásd az alábbi képet)

Alkalmazás tesztelése Excel VBA-ban

Kattintson az Italok betöltése gombra

A következő eredményeket kapja

Alkalmazás tesztelése Excel VBA-ban

Töltse le a fenti kódot tartalmazó Excelt

Töltsd le a fenti Excelt Code

GYIK

Egy statikus tömbnek fix mérete van beállítva a deklaráció során, például a Dim Arr(12). Egy dinamikus tömböt üresen deklarálunk a Dim Arr() függvénnyel, és később méretezzük át a ReDim segítségével, ha az elemek száma előre nem ismert.

A ReDim beállítja vagy megváltoztatja a dinamikus tömb méretét a deklarálás után. A Preserve kulcsszó hozzáadása, mint a ReDim Preserve Arr(10) esetében, megőrzi a meglévő értékeket az átméretezés során; Preserve nélkül az összes tárolt érték törlődik.

Használd az LBound és UBound függvényeket. Az LBound a legalacsonyabb, az UBound pedig a legmagasabb indexet adja vissza. Az elemek száma egyenlő az UBound(Arr) mínusz LBound(Arr) plusz egy összeggel, ami statikus és dinamikus tömbök esetén is működik.

Igen. Az olyan mesterséges intelligencia asszisztensek, mint a Copilot, tömbdeklarációkat és ciklusokat generálnak egy egyszerű kérésből, például tíz terméknevet töltenek be egy oszlopba. A fejlesztő beilleszti a kódot a szerkesztőbe, és teszteli a munkafüzet egy példányán.

Igen. A mesterséges intelligencia asszisztensek beolvassák a „Subscript out of range” hibát és a kódot, majd rámutatnak a tömbhatárokat meghaladó indexre, és javaslatot tesznek a javításra, például a ReDim méretének vagy a ciklusszámlálónak a módosítására. A fejlesztő alkalmazza és újra teszteli a javaslatot.

Foglald össze ezt a bejegyzést a következőképpen: