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 5. 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 5. 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 5. előadás

3 Globális és modális (modul szintű) deklarációk A modul- és a kódlapok alapértelmezésben nyilvánosak ( Public ). A globálisnak deklarált konstansok és változók programozási szinten elérhetők a munkafüzet minden modul- és kódlapjáról. A rutinok alapértelmezésben szintén nyilvánosak. Pénzügyi feladatok VBA támogatása – 5. előadás3 / 35

4 Globális és modális (modul szintű) deklarációk A kódlapok deklarációs részében nem lehet a konstansokat, a fix hosszúságú karakterláncokat és a tömböket globálissá tenni, azaz Public kulcsszóval deklarálni. Pénzügyi feladatok VBA támogatása – 5. előadás4 / 35

5 Globális és modális (modul szintű) deklarációk Egy modullap aktiválásakor (amikor a modullap egy rutinját első alkalommal meghívjuk) a globális és a modális konstansok megkapják értéküket, továbbá a VBA a típusuknak megfelelő kezdő értékkel feltölti (inicializálja) az összes globális és modális változót is. Ezután mind a konstansok, mind a változók megőrzik értéküket mindaddig, amíg a modullap nyitott állományban van. Pénzügyi feladatok VBA támogatása – 5. előadás5 / 35

6 A modullap alapértelmezéseinek beállítása Az alapértelmezett beállítások a tömbök kezdőindexét, a karakterláncok összehasonlítási módját, a változók deklarálási kényszerét, illetve alapértelmezett típusát határozzák meg. Ha elfogadjuk a rendszer beállításait, nincs semmi teendőnk. Az ún. direktívák a fordítót utasítják, hogy milyen alapbeállításokat használjon. Mit érdemes elfogadni és mit kellene megváltoztatni? Pénzügyi feladatok VBA támogatása – 5. előadás6 / 35

7 A modullap alapértelmezéseinek beállítása Option Base 1 A tömbök alsó határát nem kötelező megadni. Ha csak a felső határt adjuk meg, az alsó határ alapértelmezésben 0, a direktíva hatására 1 lesz. (Más értékek nem választhatók.) Mivel az Excelben a tartományok indexelése 1-gyel indul, célszerű a tömbök indexelését a rutinokban is 1-től indítani. A továbbiakban ezt az értelmezést tekintjük érvényesnek! Pénzügyi feladatok VBA támogatása – 5. előadás7 / 35

8 A modullap alapértelmezéseinek beállítása Option Compare {Binary | Text} Karakterláncok, illetve karakterláncokat tartalmazó változók összehasonlításakor alapértelmezés szerinti bináris módban a kis- és a nagybetűk különbözőek, szöveges módban nem. A továbbiakban megtartjuk az alapértelmezést, és a bináris összehasonlítási módot tekintjük érvényesnek! Pénzügyi feladatok VBA támogatása – 5. előadás8 / 35

9 A modullap alapértelmezéseinek beállítása Option Explicit A VBA nyelv a rutinokban implicit deklarációval dolgozik! Amikor egy utasításban addig nem definiált karaktersorozatot észlel, azt új változó neveként értelmezi, és automatikusan felveszi a változók névlistájába. Pénzügyi feladatok VBA támogatása – 5. előadás9 / 35

10 A modullap alapértelmezéseinek beállítása Option Explicit Lehet, hogy csak elvétettük egy billentyű leütését, és így a szándékunk ellenére született új változó megváltoztatja a rutin értelmét, vagyis kellemetlen szemantikai hiba keletkezik, amelyet nehéz megtalálni. Többe kerül a leves, mint a hús: Az implicit deklaráció nyújtotta kényelem nem arányos az ebből fakadó esetleges hibák megkeresésének kényelmetlenségével. Pénzügyi feladatok VBA támogatása – 5. előadás10 / 35

11 A modullap alapértelmezéseinek beállítása Option Explicit Az elírásokból, valamint a többszörös névhasználatból adódó hibák könnyebb kiszűrése végett példáinkban minden modul- és kódlapon szerepel a fenti direktíva. Hatására kötelezővé válik az explicit deklaráció, vagyis a konstansokat és a változókat használatuk előtt deklarálni kell. Pénzügyi feladatok VBA támogatása – 5. előadás11 / 35

12 A modullap alapértelmezéseinek beállítása Option Explicit állandó használata! A munkafüzet megnyitásakor váltsunk VB-nézetbe, és az Eszközök [Tools] menü Egyebek [Option] almenüvel megnyitható panelen a Szerkesztő [Editor] fülön aktiváljuk a Változó deklarálása szükséges [Require Variable Deciaration] kijelölőt. Ezt követően a VBA automatikusan generálja az Option Explicit direktívát minden újonnan létrehozott modul- és kódlapon. A már létezők beállítása nem változik meg. Pénzügyi feladatok VBA támogatása – 5. előadás12 / 35

13 A modullap alapértelmezéseinek beállítása Option Private Module A modulok és a rutinok alapértelmezésben nyilvánosak. E-nézetben egy nyitott munkafüzet makrói bármelyik másik megnyitott munkafüzetből elérhetők. Ha valamilyen okból titkolni akarjuk más felhasználók elől rutinjainkat, a Private kulcsszóval zároljuk azt a modullapot, amelyen elhelyezkednek. Pénzügyi feladatok VBA támogatása – 5. előadás13 / 35

14 A modullap alapértelmezéseinek beállítása Option Private Module A direktíva hatására az egész modul mindenestül zárttá válik más munkafüzetek számára. Globális deklarációit és rutinjait csak az aktuális munkafüzetből lehet elérni. A direktívának gyakorlati jelentősége csak többfelhasználós rendszerekben van. Pénzügyi feladatok VBA támogatása – 5. előadás14 / 35

15 A modullap alapértelmezéseinek beállítása Defrnév betű[-betű] A direktíva célja a változók alapértelmezett típusának beállítása. Az rnév egy létező beépített típus rövid neve kell legyen. A direktíva csak modullapon szerepelhet, és hatása is csak az aktuális modullapra vonatkozik. Pénzügyi feladatok VBA támogatása – 5. előadás15 / 35

16 A modullap alapértelmezéseinek beállítása Defrnév betű[-betű] Alapértelmezésben a típusnév nélkül deklarált változók automatikusan Variant típusúak lesznek. Lehet olyan feladat is, amelyben sokkal gyakoribb egy másik változótípus. Pénzügyi feladatok VBA támogatása – 5. előadás16 / 35

17 A modullap alapértelmezéseinek beállítása Defrnév betű[-betű] Ha kiadjuk ezt a direktívát, és egy típus nélküli változó nevének kezdőbetűje megegyezik a direktívában megadott betűvel, vagy a megadott tartományba esik (a határokat is beleértve), akkor típusa a megfelelő egyszerű típus lesz. A konkrét típussal rendelkező változók természetesen ebben az esetben is bármilyen más típusúak lehetnek. Pénzügyi feladatok VBA támogatása – 5. előadás17 / 35

18 A modullap alapértelmezéseinek beállítása Defrnév betű[-betű] A betű(tartomány) előírásánál nincs különbség kis- és nagybetűk között. Az A-Z tartomány lefoglalja az egész ábécét egy típus számára. Ekkor újabb típusbeállításra már nincs lehetőség, és ez az ékezetes betűkkel kezdődő nevekre is vonatkozik. Pénzügyi feladatok VBA támogatása – 5. előadás18 / 35

19 A modullap alapértelmezéseinek beállítása Defrnév betű[-betű] Példa: DefInt I-K A direktíva hatására minden típus nélküli változó, amelynek neve i, j vagy k betűvel kezdődik, automatikusan Integer (egész) típusú lesz. DE bármilyen más típusúnak deklarálhatjuk a kutya nevű változót! Pénzügyi feladatok VBA támogatása – 5. előadás19 / 35

20 Konstansok dekIaráIása A konstansok állandó adatokat tartalmaznak. Logikailag a konstans nem változtatható értékű változó. Nem érdemes megpróbálni változtatni egy konstans értékét, mert futási hibát okoz, ami a rutin futásának megszakítását eredményezi. Pénzügyi feladatok VBA támogatása – 5. előadás20 / 35

21 Konstansok dekIaráIása {Public | Private} Const konstnév [As tipusnév] = kifejezés A globális ( Public ) konstansok az alkalmazás minden modul- és kódlapjáról elérhetők de ilyeneket csak modullapon lehet deklarálni, kódlapon nem! A Private kulcsszóval az aktuális modullapra korlátozzuk egy konstans használatát (modális deklaráció). Pénzügyi feladatok VBA támogatása – 5. előadás21 / 35

22 Konstansok dekIaráIása {Public | Private} Const konstnév [As tipusnév] = kifejezés Egyik kulcsszó megadása sem kötelező. Ha nem adunk meg kulcsszót, a konstans alapértelmezés szerint modális lesz. A jobb áttekintés végett mindig, írjuk ki az alapértelmezett deklarációkat is! „Abból még nem volt baj, hogy a sorompó le volt engedve!” Pénzügyi feladatok VBA támogatása – 5. előadás22 / 35

23 Konstansok dekIaráIása {Public | Private} Const konstnév [As tipusnév] = kifejezés A konstans típusát nem kell megadni! A VBA automatikusan illeszti az adattartalomhoz. A jobb olvashatóság, vagy nagyobb pontosság elérés indokolhatja, hogy kiírjuk. Pénzügyi feladatok VBA támogatása – 5. előadás23 / 35

24 Konstansok dekIaráIása Lehetséges konstanst Variant típusúnak deklarálni! Ennek semmi értelme, hiszen egy konstans típusa fixen igazodik a tartalmához, és futás közben nem változtatható. Egy sorban - lista-elválasztóval - több konstans is deklarálható. A kifejezésekben előzőleg deklarált konstansok is használhatók; körkörös (önmagára vonatkozó) hivatkozás természetesen nem megengedett. Pénzügyi feladatok VBA támogatása – 5. előadás24 / 35

25 Konstansok dekIaráIása Szövegkonstanst (például állomány, munkalap stb. nevét) mindig idézőjelek (“ “) közé kell tenni. A beépített Excel-konstansok neve „xl”, a Visual Basic konstansoké „vb” karakterekkel kezdődik. Pénzügyi feladatok VBA támogatása – 5. előadás25 / 35

26 Változók dekIaráIása A programokban a változóknak pontosan az a szerepük, ami az algebrai kifejezésekben. A változóknak a program futása során adott értéket a műveletekben használjuk, de természetesen meg is változtathatjuk. Pénzügyi feladatok VBA támogatása – 5. előadás26 / 35

27 Változók dekIaráIása {Public|Private|Dim} név1 [As típusnév1] [‚ név2 [As típusnév2]...] A három kulcsszó közül egyet kell megadni. A Public kulcsszóval deklarált globális változók elérhetők más modullapokról. A Private vagy Dim kulcsszóval deklarált modális változók csak az aktuális modullapon léteznek. A Private és Dim kulcsszó hatása egyenértékű. A globális modális kontraszt kiemelése érdekében a Private javasolt. Pénzügyi feladatok VBA támogatása – 5. előadás27 / 35

28 Változók dekIaráIása {Public|Private|Dim} név1 [As típusnév1] [‚ név2 [As típusnév2]...] Ha egy kulcsszó után egynél több változónevet sorolunk fel, ezeket vesszővel kell elválasztani. Minden egyes változónak külön kell definiálni a típusát! Típus nélküli változó nem létezik: a típusnév elhagyása esetén az alapértelmezett ( Variant ) típusú lesz. Pénzügyi feladatok VBA támogatása – 5. előadás28 / 35

29 Változók dekIaráIása Egy modullapon a konstansok, a változók és a rutinok nevének különbözőnek kell lennie. Az esetleges névütközések elkerülése érdekében más modullapon deklarált programelemekre az [állománynév] modulnév ! változónév szintaxis szerint kell hivatkozni. Ebben az esetben a [] zárójelpárt ki kell tenni, itt nem választható adatot jelöl! Pénzügyi feladatok VBA támogatása – 5. előadás29 / 35

30 Saját (felhasználói) típusok deklarálása Adódhatnak olyan összetettebb feladatok, amelyek megoldása éppen attól válik egyszerűbbé, hogy bonyolultabb, összetett adatszerkezetekkel dolgozunk. Ezeket saját vagy felhasználói típusoknak nevezzük. Mivel a VBA „magától” nem ismeri fel, az ilyen típusokat alkalmazásuk előtt természetesen dekiarálnunk kell. Egy személyzeti nyilvántartás például nyilvánvalóan áttekinthetőbb lesz, ha egy munkatárs minden adatát egyetlen azonosítóval, esetleg éppen a nevével lehet elérni. Pénzügyi feladatok VBA támogatása – 5. előadás30 / 35

31 Saját (felhasználói) típusok deklarálása Type éntípusom saját_váltnév1 As típusnév saját_váltnév2 As típusnév End Type Saját típusok kialakításához kell egy kis programozói gyakorlat (meg némi érzék is). (C nyelvben struct, Pascal nyelvben record) A továbbiakban csak a beépített típusokat fogjuk használni. Pénzügyi feladatok VBA támogatása – 5. előadás31 / 35

32 Saját (felhasználói) típusok deklarálása Type éntípusom saját_váltnév1 As típusnév saját_váltnév2 As típusnév End Type A típusdeklaráció belsejében típusnévként mind beépített, mind előzőleg már deklarált saját típusok neve használ- ható, akár egyszerű típus, akár fix vagy dinamikus tömb formában. Típusdeklarációk tetszőleges mélységben egymásba ágyazhatók, de a típus teljes mérete nem lehet több 65 535 bájtnál. Pénzügyi feladatok VBA támogatása – 5. előadás32 / 35

33 Saját (felhasználói) típusok deklarálása Type éntípusom saját_váltnév1 As típusnév saját_váltnév2 As típusnév End Type A típusdeklaráció mindig globális => csak modullapon adható meg. A saját típus természetesen bármilyen szintű változó- vagy konstansdeklarációban használható típusnévként. Dim teszt As éntípusom Pénzügyi feladatok VBA támogatása – 5. előadás33 / 35

34 Saját (felhasználói) típusok deklarálása Type éntípusom saját_váltnév1 As típusnév saját_váltnév2 As típusnév End Type Az összetett típusok belső elemeire úgy kell hivatkozni, hogy a típusnévhez ponttal kapcsoljuk a belső változónevet. Pl. az én_típusom típusú teszt nevű változó saját váltnév2 nevű elemének étékadása: teszt.saját_váltnév2 = 2 Pénzügyi feladatok VBA támogatása – 5. előadás34 / 35

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


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

Hasonló előadás


Google Hirdetések