Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 4. előadás.

Hasonló előadás


Az előadások a következő témára: "Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 4. előadás."— Előadás másolata:

1

2 Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 4. előadás

3 Tömbök A tömb azonos típusú konstansok vagy változók rendezett sorozata. Az egydimenziós tömb elemei egy sorozatot alkotnak. A kétdimenziós (2D) elemei táblázatban (sorokban és oszlopokban) helyezkednek el. A háromdimenziós (3D) tömböt úgy képzelhetjük el, mint lapokból álló kartotékrendszert, amelyben minden lap egy kétdimenziós táblázatot tartalmaz és a lapokat egymás után soroljuk. Pénzügyi feladatok VBA támogatása – 4. előadás3 / 24

4 Tömbök Háromnál több dimenziós tömböket meglehetősen nehéz kezelni, mert csak részeikre bontva tudjuk elképzelni. Ilyenekre inkább csak tudományos számításokban van szükség, a hétköznapi életben nem. A VBA legfeljebb 60 dimenziós tömbök létrehozását engedi meg! Pénzügyi feladatok VBA támogatása – 4. előadás4 / 24

5 Tömbök deklarálása 1. A változókra érvényes deklarálási szabályok szerint úgy, hogy a változónév után kerek zárójelek között megadjuk az index-határokat, majd As kulcsszóval az elemek (közös) típusát. Indexhatár számérték, számkonstans vagy ilyenekből képzett aritmetikai kifejezés lehet; alsó_határ ≤ felső_határ kötelező. Az alsó határt nem kötelező megadni; ha nem szerepel, az alapértelmezés szerinti, példáinkban 1 értékű lesz (később). Ha nem adunk meg típusnevet, a tömb alapértelmezett típusú lesz ( Variant ). Pénzügyi feladatok VBA támogatása – 4. előadás5 / 24

6 Tömbök deklarálása 1. Egydimenziós tömb deklarálása: Dim tömbnév ([alsóhatár To]felsőhatár) As típusnév Dim összeg(0 to 9) As Long Többdimenziós tömbök esetén - vesszővel elválasztva - annyi indexhatár-párt, illetve indexhatárt kell felsorolni, ahány dimenziós a tömb. Pénzügyi feladatok VBA támogatása – 4. előadás6 / 24

7 Tömbök deklarálása 2. Indexhatárok megadása nélkül dinamikus tömbök hozhatók létre. Ilyenkor a konkrét indexhatárokat csak a rutin belsejében, futás során lehet megadni, a tömbelemek feltöltése előtt, Redim kulcsszóval. Az egyszer megadott dimenziószám később már nem változtatható meg, de az egyes dimenziók indexhatárait többször is, tetszőlegesen újra lehet definiálni. Ilyenkor a tömb aktuális tartalma általában elvész. A Preserve kulcsszóval meg lehet őrizni a tömbértékeket, de ekkor csak az utolsó dimenzió felső határát lehet módosítani. Pénzügyi feladatok VBA támogatása – 4. előadás7 / 24

8 Tömbök deklarálása 3. Variant típusú változókhoz az Array függvénnyel rendelhetők - rögzített hosszúságú karakterláncok és saját típusú változók kivételével - tetszőleges típusú, valamint tetszőleges méretű és dimenziószámú tömbök. A változó altípus-kódja ilyenkor a tömb típuskódja; például Variant típusú tömb esetén 8204 ( ). Pénzügyi feladatok VBA támogatása – 4. előadás8 / 24

9 Tömbök A tömbelemekre kerek zárójelbe írt indexeikkel hivatkozunk. Minden tömbelemnek annyi indexe van, ahány dimenziós a tömb. Az egydimenziós tömbök elemeinek indexét sorszámnak, a kétdimenziós tömbök elemeiét sor- és oszlopszámnak, a háromdimenziósokéit lap-, sor- és oszlopszámnak is nevezzük. Pénzügyi feladatok VBA támogatása – 4. előadás9 / 24

10 Tömbök Az index számérték, számkonstans, numerikus változó, vagy számot eredményező kifejezés lehet. Az indexhatárok meghatározzák az indexek lehetséges értékét, és természetesen az elemek darabszámát is. Minden index értékének a megfelelő indexhatárok közé kell esnie. Pénzügyi feladatok VBA támogatása – 4. előadás10 / 24

11 Tömbök A tömbök helyfoglalása bájtban: *dimenziószám + elemszám*elemtípus. Ha a tömböt Variant típusú változóba ültetjük, további +12 bájtra van szükség. Például egy egydimenziós 6 elemű logikai ( Boolean ) tömb helyfoglalása *1 + 6*2 = 36 bájt; ugyanez Variant típusú változóban 48 bájt. Pénzügyi feladatok VBA támogatása – 4. előadás11 / 24

12 Tömbök Excel tömböket, azaz cellatartományokat csak Variant típusú változókhoz rendelhetünk hozzá! Az egy sorból, vagy egy oszlopból álló Excel tömbből egydimenziós, az elemi tartományból kétdimenziós VBA tömb lesz. Fordított irányban nincs típuskorlátozás: bármilyen típusú egydimenziós VBA tömbbel egy cellasort, kétdimenzióssal téglalap alakú Excel tartományt tölthetünk fel. Pénzügyi feladatok VBA támogatása – 4. előadás12 / 24

13 Példa Egydimenziós tömbök deklarálása 10 Long típusú elemből; az indexhatárok 1÷10, 0÷9, illetve 100÷109: Dim összeg(10) As Long Dim összeg(0 to 9) As Long Dim összeg(100 to 109) As Long Pénzügyi feladatok VBA támogatása – 4. előadás13 / 24

14 Példa Egydimenziós, 7 Variant típusú elemből álló tömb; indexhatárok 1÷7: Dim tömb(7) Lehetséges értékadások például: tömb(l) = „alma”, tömb(2) = 3.14, tömb(3) = True, … Pénzügyi feladatok VBA támogatása – 4. előadás14 / 24

15 Példa Kétdimenziós tömb, amely 48 Boolean (logikai) típusú elemből áll; indexhatárok 1÷4 és 11÷22: Dim tmb(4, 11 To 22) As Boolean Ehelyett: Dim tmb(1 To 4, 11 To 22) As Boolean Miért? Például a 3. sor 5, eleme: tmb (3, 15). Pénzügyi feladatok VBA támogatása – 4. előadás15 / 24

16 Példa Variant típusú változó, 7 elemű, String típusú tömbbel feltöltve, miáltal indextartománya 0÷6 lesz: Dim napok napok = Array(”Hétfő”, ”Kedd”, ”Szerda”, ”Csütőrtök”, ”Péntek”, ”Szombat”, „Vasárnap”) A napok(0) értéke „Hétfő”, a napok(6) értéke „Vasárnap”. Ha Variant típusú változóhoz az Array függvénnyel rendelünk tömböt, az alsó indexhatár mindig 0 lesz, akkor is, ha 1-re állítottuk az alapértelmezést! Pénzügyi feladatok VBA támogatása – 4. előadás16 / 24

17 Példa Definiálunk egy egész típusú dinamikus tömböt, amelyet a futás során először háromdimenziós 60 eleművé deklarálunk át: Static számok() As Integer Redim számok(1 to 3, 2 to 6, 4) Most a tömb első eleme számok (1,2,1), utolsó eleme számok(3,6,4), a számok(1,1,1) elem nem létezik! Pénzügyi feladatok VBA támogatása – 4. előadás17 / 24

18 Példa A következő deklarációban a határokat az x, y és z változó aktuális értéke szabja meg, de a tömb addigi tartalma elveszik: Redim számok (x, y, z) Harmadszor úgy változtatjuk meg a deklarációt, hogy megőrizzük a tömbelemek értékét, ám ekkor csak az utolsó dimenzió mérete változhat: Redim Preserve számok(x, y, 12) Pénzügyi feladatok VBA támogatása – 4. előadás18 / 24

19 Feladat A tömbök indexelésének gyakorlására a gimp_31.xls munkafüzet tömbök munkalapján találunk egy zöld szegéllyel keretezett táblázatot. A táblázatnak csak az első 10 sora és 8 oszlopa tartalmaz értékes adatot, de a kitöltöttekkel összefüggő cellákban újabb adatok hozzáírásával bővíteni, vagy egész sorok, illetve oszlopok törlésével szűkíteni lehet a tartományt. A táblázatot a tömbök nevű makró-eljárás kezeli, amelyet a CTRL+A billentyűkombinációval lehet elindítani. Pénzügyi feladatok VBA támogatása – 4. előadás19 / 24

20 Feladat A makró a következőképpen működik: Ha a „Sor” ( B20 ) és az „Oszlop” ( B21 ) cellába beírunk egy sor- és egy oszlopszámot, a megfelelő táblázatelem kiemelt színű lesz, és értéke egyidejűleg bekerül az „Érték” ( E20 ) cellába. A sor és az oszlopszám természetesen nem haladhatja meg a kitöltött tartomány megfelelő méretét; ellenkező esetben az „Érték” cellában hibajelzést kapunk. Ugyancsak hibajelzéshez vezet, ha a kijelölt cella nem a kitöltött tartományban van. Pénzügyi feladatok VBA támogatása – 4. előadás20 / 24

21 Feladat A makró a következőképpen működik: Ha a makró indításakor mind a sor-, mind az oszlopcella üres, az eljárás színezéssel kiemeli a táblázatban kijelölt cellát, és ennek értékét Írja az értékcellába. Pénzügyi feladatok VBA támogatása – 4. előadás21 / 24

22 Feladat A makró a következőképpen működik: Az eljárásban a méretellenőrzéshez a CurrentRegion tulajdonságot használjuk, amely visszaadja azt a tartomány-objektumot, amelyben az aktív cella van. Ennek méreteit úgy határozza meg, hogy az aktív cellából indulva minden irányban kiterjeszti a kijelölést az első üres sorig és oszlopig, illetve a munkalap határáig. Egy kijelölt objektum - ebben az esetben a kijelölt tartomány - sorait a Rows, oszlopait a Columns konténerből lehet kiválasztani, számukat a Count tulajdonság adja meg. Pénzügyi feladatok VBA támogatása – 4. előadás22 / 24

23 Feladat Jövőbeni felhasználása során ügyeljünk rá, hogy a CurrentRegion tulajdonság az aktív cella sorát és oszlopát mindenképpen figyelembe veszi. Következésképpen akkor is 1 értéket ad a sor- és az oszlopszámra, ha a kijelölt tartomány minden cellája, illetve az aktív cella minden szomszédja üres! Ha ez a gyanú felmerül, előzetesen meg kell vizsgálni a helyzetet az IsEmpty függvénnyel. Pénzügyi feladatok VBA támogatása – 4. előadás23 / 24

24 Köszönöm a figyelmet! Folyt köv. Pénzügyi feladatok VBA támogatása – 4. előadás24 / 24


Letölteni ppt "Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 4. előadás."

Hasonló előadás


Google Hirdetések