Közlemény a dinamikus tömböket

Közlemény a dinamikus tömböket

Ez a könyv segít elsajátítani a VBA integrált fejlesztői környezet, és megtanulják, hogyan kell programozni a VBA-ban a tárgyak használata, azok tulajdonságait, módszerek és eseményeket. Vizsgálat programozási technikák olyan példák illusztrálják, amelyek segítségével azonnal kipróbálni a gyakorlatban. A megszerzett tudás lesz képes alkalmazni a kiigazítás és javítása népszerű Office alkalmazások, többek között az Office XP alkalmazások és a saját alkalmazásokat.

A könyv azoknak készült, akik mennek gyorsan és könnyedén megtanulják, hogyan kell programozni a Windows, a VBA.

Könyv: VBA kezdőknek

Állapítsa meg a tömb olyan dinamikus az alábbi esetekben.

* Ha nem tudja, és nem lehet tudni, a tömbméret a futási.

* Ha tudja a tömb méretét a program meg fogja változtatni.

* Ha ezek után már nem használja a tömb szeretne felszabadítani az összes memóriát más célokra (nagy tömbök vehet fel egy csomó memóriát lehet felszabadítani használati dinamikus tömbök).

DateDniRozhdeniya Dim () As Date

VBA felkészüljenek a tömb elemeinek típusa Date, valójában nem teremt hosszú sorát.

A dinamikus tömb adatokat tárolhat, amíg nem hoz létre egy sor igazi a méret megadásával. Ebből a célból az üzemeltető ReDim, ahogyan az a következő egydimenziós tömbben:

ReDim dateDniRszhdeny (intChisloDneyRozhdeniya - 1)

Megjegyezzük, hogy a méret a tömb által létrehozott ezen üzemeltető által adott változó felhasználásával az a feltételezés, hogy a változó értékeit már a programban meghatározottak szerint. A változó értéke kell csökkenteni 1, hogy az elemek száma a tömbben szerint VBA számozása 0 tömbök, természetesen, ha nem változik a számozási rendszert fogadott el alapértelmezés szerint, amint azt a következő részben „számozása tömb elemeit.”

A ReDim nyilatkozatot kell használni eljárásokban. Ugyanez tömb lehet újra ahányszor szükség van kérve száma teljesen új dimenziók és méretben. Csak ne felejtsük el, hogy amikor felülírja a szokásos sor tartalma teljesen megsemmisült. Sem lehet változtatni az adattípus rendelt tömb, kivéve, hogy bizonyos feltételek mellett, megmagyarázni, hogy úgy tűnik, hogy túl bonyolult nekem.

Annak érdekében, hogy a tömb egy újradefiniálása az adatokat, használja a ReDim nyilatkozatot a kulcsszó megőrzése. Egy ilyen sorozata nyilatkozatok nyilatkozik a dinamikus tömb, hozzon létre, mint egy kétdimenziós tömb egy adott méretű és ezután az a tömb méretét a második dimenzióban, menne a meglévő adatokat:

Dim dblGalacticMasses () As Double

ReDim megőrzése dblGalacticMasses (1 és 30 között, 50 1)

ReDim megőrzése dblGalacticMasses (1 és 30 között, 1 100)

Tény, hogy a lehetősége nagyon korlátozott megőrzése - ha ezzel a kulcsszóval tilos megváltoztatni a mérete a tömb és képes megváltoztatni a méretét csak az utolsó mérés (de még mindig szükség van ReDim megőrzése nyilatkozat adhatók meg a másik mérés). Lehetőség van, hogy a tömb mérete kisebb, de a tárolt adatok a törölt elemek örökre elvész.

Ahhoz, hogy a programot egy adott eleme a tömb, írja a tömb nevét, majd zárójelben a megadott indexet, amelyben ez az elem. Index kell határoznia az egész értékeket minden egyes méreteit a tömb. Például, a kifejezés strSayings (4, 6) nyilvánvalóan egyedileg azonosítja karaktersorozat-adatok a 4. sor és oszlop 6 kétdimenziós tömböt.

Belül a leírt rendszerben használható tömb elemeinek, mint a közönséges változók. Akkor tegye a következőket:

* Hozzárendelése tömbelem értéke; Ebben a példában az érték, amelyet az adott elem X Valuta típusú háromdimenziós tömb adatok:

curBigDough (5, 8, 19) = 27,99

* Hozzárendelése a tárolt érték a tömb, egy változó, például:

„Senki sem fogja észrevenni a különböző zokni.”

„Itt találkozik egy régi barátja egy szupermarketben.”

intUserChoice = InputBox ( "Ahhoz, hogy tudjuk, a jövőben," _

„Adj meg egy számot 1 és 10”)

By the way, ez a kód jelentősen javítható, hozzáadva a feldolgozás hibás bemenet, akkor lehetséges, ha a felhasználó válaszol a kérésre Input Box funkciót. A probléma az adatok érvényesítését, amikor belépnek tárgyalt 10. fejezet.

Ahhoz, hogy megtudja, hogy hány elem a tömbben elfér egy mérési használja Ubound hogy a funkció különösen hasznos, amikor dinamikus tömbök, különböző pontjain a program dinamikus tömb tartalmazhat különböző számú elemet. Syntax UBound következő funkciókat:

UBound [array_name, mérési]

array_name érv nyilvánvalóan meghatározza a neve a tömb, amely alkalmazni kívánja, valamint az argumentum megadja a dimenzió egy egész szám, amely megmondja a VBA, egy olyan dimenziója tömb érdekli. Ha a mérés nincs megadva, UBound függvény mérete az első dimenzió a tömbben.

Amikor először létrehozunk egy tömböt elemében nem tartalmaz valós információkat. Egy bizonyos ponton a programban meg kell a megüresedett hely alkalmas tömb adatokat. Ha kell helyeznie egy csomó adat egyszerre, ez a legalkalmasabb erre a beágyazott hurkok. Ezután egy-egy dimenzió a tömbben. általában a kiválasztott ideiglenes változó deklarált álló eljárással mindezen ciklus a ciklus számláló.

Ezt a megközelítést az alábbi kis programot, amelyben a háromdimenziós tömb tele van szekvenciális egész kezdődően 1. Íme a kód:

Const Size As Integer = 3

Dim dblMatrix (1 méretre, l méretre, l méretre) As Double

Dim I As Integer, J As Integer, K As Integer, X As Integer

I = 1 méretre

J = 1 méretre

A k = 1 méretre

dbl Matrixf l, J, K) = X

Az, hogy a beruházási ciklusok fogja meghatározni a töltés az elővárosi tömb. Másfelől, a sorrendben, amelyben az elemek a tömb van töltve, és gyakran függ az értéküket.

Magyarázd el, csak túl nehéz szavakat, így fogom használni a képeket. Ismét utalva a példa kódot. Képviseli a háromdimenziós tömböt a kocka, tagjai kis kockákra, azaz tömb.

Az ábra ez a gondolat kísérlet ábrán látható. 13.2.

Ábra. 13.2. Ez a rajz egy tömb adatok tárolására; nyilak a betűk megfelelnek a méréseket a tömb

Felhívjuk figyelmét, hogy a fő vonal a kód dblMatrix (I, J, K) = X, a változók I, J és K rendre az első, második és harmadik dimenzió a tömbben. Ábra. 13.2 én önkényesen a betűket a kocka oldalai, meg annak méreteit.

Most nézd meg, hogy ezeket a változókat használjuk A loop. Következő. Counter a külső hurok az I, J, és az utolsó sleduyuschego-, belső - K meg kell értenie, hogy a VBA indul végrehajtás a belső hurok, át neki végig a ciklust, hogy a helyzeten. Kuba látható. 13.3 mutatják két egymást követő pillanataiban elején kitöltő tömb ebben a példában.

H, amíg a belső hurok lefusson, VBA nem változtatja meg a változók értékeit I. és J. Amikor a belső hurok először telt el teljesen az első alkalommal lesz a lehetőség, hogy egy lépést következő ciklusban tsikl- J. J- Ez növeli az értéket, és újra indul a végrehajtás a belső hurok az elejétől a végén. Az érték megváltozik, ha a hurok F lefut háromszor. Növelése után kezd megtelni a következő réteg a tömb (ábra. 13.4).

Remélhetőleg most már érti a módosítás milyen hatással nagyságrendű beruházási ciklusok sorrendjében tölteléket a tömbben. Tegyük fel, hogy a megrendelés ciklus befektetési megfordul, és a számláló a külső hurok most K. Hogy kell kinéznie ebben az esetben a megfelelő kódot (megjegyzendő, hogy az értékadás operátor maradt ugyanazon a helyen):

Ábra. 13.3. Ez a két ábrák szemléltetik a sorrend, amelyben a példában leírt eljárás, kitölti egy tömb, mint végző belső hurok. Következő:

K = 1 méretre

J = 1 méretre

I = 1 méretre

dblMatrix (I, u, K) = X

Ennek eredményeként, a tömb jelenik meg ábrán látható. 13.5.

Ábra. 13.4. A második réteg a tömb kezd kell tölteni csak a változás után számláló értékét a külső hurok, For. következő

Ábra. 13.5. Ez a rajz szemlélteti a tömb sorrendben a töltés a módosított eljárás,

A tömb tartalmazza ugyanazokat az értékeket, mint az első esetben, de ezek tárolják más elemei a tömb.

A VBA 6, akkor lehet rendelni a tartalmát egy tömb másik egy egyszerű nyilatkozatot, mint

Egy tömb balra (az egyik, hogy a hozzárendelt értékek), hogy dinamikus, és a VBA felülírja automatikusan összhangban dimenzió és az a tömb méretét a jobb oldalon. Fogadása értékek a tömb is engedélyezi tárolására típusú, amelyet az eredeti adatok tömb.

A VBA 5 meg kell másolni az adatokat tömb elemenként, mint ez:

Kapcsolódó cikkek