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

3 Adatszerkezetek Az állandók és változók megadását (név, típus) deklarációnak nevezzük. Ezzel foglalunk nekik helyet a memóriában. Konstansokat és a változókat a kód- és modullapok elején kell, illetve a rutinok elején érdemes összegyűjteni. Ugyanarra az adatra többször is szükség lehet Utólagos módosítás miatt Konstansok nevét NAGYBETŰVEL írjuk. Pénzügyi feladatok VBA támogatása – 3. előadás3 / 39

4 Rutinok (célszerű) elhelyezése Ha a feladat egy munkafüzethez tartozik - a munkafüzet (ThisWorkbook) kódlapján. Ha a feladat egy munkalaphoz tartozik - a munkalap kódlapján. Párbeszédlap-kezelőket - párbeszédlap kódlapján (Forms). A feladat megoldás kódját,vagy ami több munkalapot érint - modullapo(ko)n (Modules). A deklarációk érvényességi körét ( Scope ), illetve a rutinok használatát arra az aktuális modul- illetve kódlapra lehet korlátozni, amelyen találhatók (később). Pénzügyi feladatok VBA támogatása – 3. előadás4 / 39

5 Programok elvi felépítése A deklarációs rész tartalmazza az alapértelmezett beállításokat és rutinoknál a rutinfejet. (később). Itt kell felsorolni a használni kívánt konstansok és változók nevét, valamint típusát. A konstansok és a változók nevét az ismert névmegadási szabályok szerint kell megadni, a típusnév kötött. A deklarációs rész kialakítása nem kötelező, de igen ajánlott! Megkönnyíti a programok belövését Javítja az áttekinthetőséget Pénzügyi feladatok VBA támogatása – 3. előadás5 / 39

6 A törzs: végrehajtó rész, a program. Rutinokból, utasításokból áll. Megjegyzéseket bármelyik részben el lehet helyezni. Programok elvi felépítése Pénzügyi feladatok VBA támogatása – 3. előadás6 / 39

7 Globális: (alkalmazás szintű) minden modul- és kódlapon, ezeken belül minden rutinban használhatók, csak modullapokon lehet deklarálni. Modális: (modul, vagy kódlap szintű) csak az aktuális (a deklarációt tartalmazó) modul- illetve kódlapról érhetők el. Lokális: csak abban az egy rutinban elérhető, ahol deklarációjuk van. A rutin befejeződésekor elvesztik értéküket, kivéve a Static kulcsszóval megjelölt statikus konstansokat és változókat. A konstansok és változók hierarchia szintjei (érvényességi kör, Scope szerint): Pénzügyi feladatok VBA támogatása – 3. előadás7 / 39

8 Deklarálni kell: az alapértelmezéstől eltérő beállításokat, mind a globális, mind a modális konstansokat és változókat. Deklarálni lehet: a lokális konstansokat ás változókat. A globális és a modális deklarációk helye kötelezően a modullapok deklarációs részében, az első rutin előtt van. A lokális deklarációk ésszerűen a rutin deklarációs részében, az első végrehajtható utasítás előtt vannak (a rutin belsejében is szerepelhetnek). Deklarációk Pénzügyi feladatok VBA támogatása – 3. előadás8 / 39

9 ! Különböző hierarchiaszintű konstansoknak és változóknak lehet ugyanaz a nevük, a futás során mindig a legalacsonyabb szintű deklaráció érvényes. Megengedett, de kerülendő! Nehézkes lesz a program futásának nyomon követése és a programhibák felderítése. Pénzügyi feladatok VBA támogatása – 3. előadás9 / 39

10 Beépített típusok Egy programban minden adat — konstans, változó és a függvények ugyancsak változóként kezelt visszatérési értéke — rendelkezik valamilyen típussal, amelyet általában a programozónak kell megadnia. Típusmegadás: tárhelyet foglal, meghatározza az adattal végezhető műveleteket. Pénzügyi feladatok VBA támogatása – 3. előadás10 / 39

11 Beépített típusok Típus megadás: As (= mint) kulcsszó felhasználásával, változónév As típusnév formában a változónév után közvetlenül (szóköz nélkül) írt típusjellel, ha van ilyen (később). A típusjel nem része a névnek, vagyis a hivatkozásokban nem szerepelhet! A típus megadás elé a Dim vagy Static kulcszót kell írni (később). Pénzügyi feladatok VBA támogatása – 3. előadás11 / 39

12 Beépített típusok A típusmegadás kötelező! Ha egy változót nem a típusának megfelelő értékkel akarunk feltölteni, futási hiba keletkezik ( Variant típus kivételével [később]). A típus megválasztása bizonyos mértékű kötöttséget jelent, de hasznos (pl. nem lehet szöveggel szorozni). Pénzügyi feladatok VBA támogatása – 3. előadás12 / 39

13 Beépített típusok A típusok osztályai: programnyelvbe beépített, egyszerű típusok, az ezekből felépített saját vagy felhasználói típusok Pénzügyi feladatok VBA támogatása – 3. előadás13 / 39

14 Egyszerű típusok Típus Típus- jel Hossz (byte) AlsóFelső Legkisebb (≠0) abszolútérték Kezdőérték kódnévrövidnévértékhatár 11 Boolean Bool-2True (-1)False (0)False 17 Byte Integer Int % Long Lng & Single Sng !4± E E Double Dbl #8± E E Decimal - -14± E Currency 10 7 Date -8100/01/01 0:00:009999/12/31 23:59: /12/30 0:00:00 8 String Str $10+c0 karakter≈ kar.-““ 8 String*n n1 karakter65529 karakter-n*chr(0) 9 Object Obj -4-- Nothing (12) Variant Var -[16]értékadás után az aktuális típustól függő Empty Pénzügyi feladatok VBA támogatása – 3. előadás14 / 39

15 Egyszerű típusok Boolean Látható, hogy nincs valódi (1 bájtos) logikai típus. Ha logikai típusú változót számmá alakítunk, a True logikai értékből -1, a False -ból 0 lesz; fordítva minden nullától különböző érték True -vá alakul. Összehasonlításokban először a logikai változó értékelődik ki; ezért például a 3 = True kifejezés értéke False, mivel 3 ≠ —1. Pénzügyi feladatok VBA támogatása – 3. előadás15 / 39

16 Egyszerű típusok Byte, Integer, Long, Single, Double Ez az öt numerikus típus szolgál a szokásos 1, 2, illetve 4 bájtos (fixpontos) egész, valamint egyszeres, illetve kétszeres pontosságú, lebegőpontos típusú valós számok tárolására. Pénzügyi feladatok VBA támogatása – 3. előadás16 / 39

17 Egyszerű típusok Decimal Nem adható meg a deklarációs részben, csak Variant típusú változók altípusaként használható (később). A változók értékét a CDec függvénnyel lehet erre a típusra átváltani. Az ilyen típusú decimális számok 29 értékes jegyet tartalmaznak. Egészként (tizedespont nélkül) használva a ± tartományt fedik le, ha pedig kitesszük a tizedespontot, akkor 1 egész- és 28 tizedesjegyből állnak. Pénzügyi feladatok VBA támogatása – 3. előadás17 / 39

18 Egyszerű típusok Currency Ez a numerikus típus valutaértékek gyors és pontos számítására szolgál: speciális fix- pontos vegyesszámokat tárol, 11 egész- és 4 tizedesjegyen. A két lebegőpontos típus értéktartománya ugyan jóval nagyobb, de a számítások során fellépő kerekítési pontatlanságok miatt kevésbé alkalmasak erre a célra, és végrehajtási idejük is jóval hosszabb. Pénzügyi feladatok VBA támogatása – 3. előadás18 / 39

19 Egyszerű típusok Date Ez a típus dátumokat és időpontokat tárol Double számként, melynek egész része a napok számát, törtrésze a napon belüli időpontot jelenti. A kezdőpont december 30, 0:00:00 óra. Ez a dátum és időpont adja a Date típusú változó 0 (kezdő) értékét; a megelőző dátumok értéke negatív. (Lásd a naptárral kapcsolatos 10. lábjegyzetet a 16. oldalon.) Pénzügyi feladatok VBA támogatása – 3. előadás19 / 39

20 Egyszerű típusok Date A VBA két # között megadott szöveges adatot dátumkonstansnak tekint, és dátumként, illetve időpontként kísérel meg értelmezni. Érvényes formák: # #, #12,22,32#, #1848. márc :00# stb. Excel munkalapokról dátum- és időadatokat biztonságosan csak Date típusú változókba lehet átvenni, illetve ilyenekből lehet az Excel által is felismerhető dátumokat visszaírni. A dátumokat - szöveg helyett - inkább dátumkonstansként célszerű megadni. Pénzügyi feladatok VBA támogatása – 3. előadás20 / 39

21 Egyszerű típusok Néhány gyakoribb dátum- és időfüggvény FüggvényEredmény Now Aktuális dátum és időpont Double dátumszám formában Date, Date$ Rendszerdátum szám, illetve 10 karakteres szöveg formában Date Serial (év,hó,nap) A megadott számhármas átalakítása dátumszámmá DateValue (szövegkifejezés) Dátumként értelmezhető szöveg átalakítása dátumszámmá Time, Time$ Rendszeridő időszám, illetve 8 karakteres szöveg formában TimeSerial (óra,perc,mp) A számhármas átalakítása időszámmá (Double törtrésze) TimeValue (szövegkifejezés) Időpontként értelmezhető szöveg átalakítása időszámmá Year(d), Month(d), Day(d) Addátum év, hónap illetve nap értéke Hour(d), Minute(d), Second(d) Addátum óra, perc, illetve másodperc értéke Pénzügyi feladatok VBA támogatása – 3. előadás21 / 39

22 Egyszerű típusok String, String*n Változó hosszúságú karakterlánc. Hossza legfeljebb mintegy , illetve rögzített esetben n (legfeljebb ) karakter; ez utóbbi szükség esetén jobbr szóközökkel feltöltve. A String típusú változó tényleges hossza 10 + a karakter száma; ezt a Len(változónév) függvénnyel lehet lekérdezni. Fix hosszúságú karakterláncot csak modullapon lehet deklarálni! Pénzügyi feladatok VBA támogatása – 3. előadás22 / 39

23 Egyszerű típusok String, String*n Három függvény, az LTrim(szövegkifejezés), az RTrim (szövegkifejezés), illetve a Trim (szövegkifejezés) segítségével eltávolíthatjuk a felesleges szóközöket a szöveg elejéről, végéről, illetve mindkét oldaláról. Pénzügyi feladatok VBA támogatása – 3. előadás23 / 39

24 Egyszerű típusok Object Egy objektumhoz Set paranccsal hozzárendelt Object (vagy Variant ) típusú változó minden tekintetben helyettesíti az objektumot, és tartalmazza annak címét. Mivel rendelkezik az objektum metódusaival és tulajdonságaival is, az objektumot változón keresztül kezelhetjük. Pénzügyi feladatok VBA támogatása – 3. előadás24 / 39

25 Példa Definiáljunk összetett tartományt! Egy Variant, egy objektum és egy egész típusú változó deklarálása: Dim tart, halmaz As Object, darab% Utasítássorok (részlet): Set tart = ActiveSheet.Range(”Al:D5”) Set halmaz = Union(tart,ActiveSheet.Range(”C4:F9”)) halmaz.Select darab = Selection.Areas.Count Set tart = Selection.Areas(darab).Resize(4,2) Set halmaz = Nothing Pénzügyi feladatok VBA támogatása – 3. előadás25 / 39

26 Példa A Set utasítás hatására a tart változó az éppen aktív munkalap A1:D5 tartományát képviseli. Ezt a Union metódus halmaz néven egyesíti a C4:F9 diszjunkt tartománnyal. Az így kialakított tartományt a halmaz változón keresztül jelöljük ki. A kijelölés összetevőit az Areas konténer tartalmazza, darabszámukat a Count tulajdonsága adja. Így a programrészlet végrehajtása után a darab változó értéke 2 lesz. Pénzügyi feladatok VBA támogatása – 3. előadás26 / 39

27 Példa A következő sorban a Resize tulajdonság - a bal felső sarokpont megtartásával - átméretezi az Areas konténer utolsó ( darab sorszámú) összetevőjét, vagyis a C4:F9 tartományt C4:D7 -re (4 sor, 2 oszlop), s ezt rendeljük hozzá a tart változóhoz. Az utolsó sorban a Nothing kulcsszóval megszüntetjük a halmaz változó hozzárendelését, miáltal az egyesített tartomány megszűnik létezni; de a tart változó hozzárendelése érvényben marad. Pénzügyi feladatok VBA támogatása – 3. előadás27 / 39

28 Példa Vegyük észre, hogy ha a tart változót valamilyen numerikus típusúra deklaráltuk volna, akkor egyrészt nem lehetett volna segítségével létrehozni halmaz tartományt. Másrészt például a tart = ActiveSheet.Range(”A1”)[.Value] utasítás (a.Value elhagyható) csak az A1 cella tartalmát venné át a tart változóba, az objektum-tulajdonságait nem. Pénzügyi feladatok VBA támogatása – 3. előadás28 / 39

29 Egyszerű típusok Variant A VBA nyelv „legcselesebb” típusa! bármelyik másikat helyettesítheti, tartalmát átveheti, illetve felülírhatja; sőt magában foglalhat tetszőleges, akár Variant típusú és tetszőleges méretű tömböket is. Két kivétel van: nem tartalmazhat fix hosszúságú karakterláncokat, valamint saját (felhasználói) típusú változókat. Pénzügyi feladatok VBA támogatása – 3. előadás29 / 39

30 Egyszerű típusok Variant Jegyezzük meg! A VBA nyelvben Variant az alapértelmezett típus. Az implicit (nem deklarált változók [később]), valamint a típusnév és típusjel nélkül deklarált változók és függvények automatikusan Variant típusúak Iesznek! Pénzügyi feladatok VBA támogatása – 3. előadás30 / 39

31 Egyszerű típusok Variant A Variant típusú változók hossza legalább 16 bájt. Más típusú adatok felvételekor hosszuk automatikusan illeszkedik az adattípus hosszához (karakterláncok esetében például 22 + karakterenként 1 bájt). Az ilyen típusú változóknak nincs saját kódjuk, értékadáskor viszont a megfelelő altípusúvá alakulnak és felveszik ennek típuskódját, amit a VarType függvénnyel lehet lekérdezni. Pénzügyi feladatok VBA támogatása – 3. előadás31 / 39

32 Egyszerű típusok Variant A VarType függvény egyszerű típusok esetében a táblázatban szereplő típuskódot adja vissza; idegen adattípus esetében a kód 13. Az altípusnak műveletvégzés során van jelentősége. Variant típusú programelemek értéke az első értékadás előtt Empty ; és altípusuk kódja 0. A Variant típus speciális alesete a 10 kódú Error altípus (később) A típus további előnye, hogy műveletvégzés során a VBA automatikusan elvégzi a szükséges típusváltásokat is. Pénzügyi feladatok VBA támogatása – 3. előadás32 / 39

33 Egyszerű típusok Megjegyezzük, hogy létezik még egy speciális üres altípus is, amelynek altípus-kódja 1, értéke Null, jelentése: érvénytelen adat. Mivel jelentősége csak egyes adatbázis-kezelő rendszerekkel kapcsolatban van, a továbbiakban nem használjuk. Pénzügyi feladatok VBA támogatása – 3. előadás33 / 39

34 Példa Nézzük, hogyan változik az altípuskód (atk). Dim teszt [As Variant] ’alapértelmezett nem kell megadni. teszt = ”100” ’3 karakteres karkterlánc („100”), atk=8. teszt = teszt — 99 ’2 bájtos egész (1), atk=1. teszt = teszt & ”ház” ’4 karakteres karkterlánc („1ház”) atk=8. teszt= teszt * 3 ’HIBAKÓD atk=10. Szöveggel nem lehet ’aritmetikai műveletet végezni Pénzügyi feladatok VBA támogatása – 3. előadás34 / 39

35 Egyszerű típusok Variant Futás közbeni hibák elkerülése érdekében célszerű lekérdezni a Variant típusú változó aktuális altípusát az alábbi függvényekkel: Függvény neveVisszaadott érték VarType (változónév) a változó (aktuális aI)típus kódja IsArray (változónév)True, ha a változó tömböt tartalmaz IsDate (változónév)True, ha a változó Date altípusú IsEmpty (változónév)True, ha a változó még nem kapott értéket IsError (változónév)True, ha a változó Error altípusú IsNumeric (változónév)True, ha a változó numerikus altípusú IsObject (változónév)True,haaváltozó Object altípusú Pénzügyi feladatok VBA támogatása – 3. előadás35 / 39

36 Egyszerű típusok Variant A Variant típus alkalmazásának hátránya, hogy gyakran feleslegesen sok helyet foglal, és lényegesen lassítja a műveletvégzést; ezért megfontoltan használjuk! Pénzügyi feladatok VBA támogatása – 3. előadás36 / 39

37 Feladat Nyissuk meg a gimp_31.xls munkafüzet típusok munkalapját! Írjunk a kijelölt F2 cellába tetszőleges számokat vagy szöveget, és a CTRL+T billentyűkombinációval indítsuk el a tipusellenőrző makrót! Ez beolvassa az F2 cella tartalmát egy Variant típusú változóba, majd eldönti, hogy a minimál-elv alapján milyen típusú változóban lehetne az adott értéket tárolni. Ezután a makró kiírja a változó típusát az F5, valamint típuskódját az F6 cellába, ami egyben a Variant változó altípusa és altípus-kódja is. Pénzügyi feladatok VBA támogatása – 3. előadás37 / 39

38 ! A minimál-elv azt jelenti, hogy minden adatot a lehető legkisebb helyfoglalású változóban tárolunk. A VBA nem így működik: a numerikus adatokat a munkalapokról a lehető legnagyobb értéket befogadó Double típusúként veszi fel. Pénzügyi feladatok VBA támogatása – 3. előadás38 / 39

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


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

Hasonló előadás


Google Hirdetések