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: