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

3 Rutinok felépítése rutinfej deklarációs rész rutintörzs zárósor Pénzügyi feladatok VBA támogatása – 6. előadás3 / 45

4 A rutinfej A rutinok első sora, amely a rutin típusát, nevét és esetleges formális paramétereinek felsorolását tartalmazza. A rutinfej és a zárósor szintaxisa attól függ, hogy a rutin eljárás vagy függvény. Pénzügyi feladatok VBA támogatása – 6. előadás4 / 45

5 A rutinfej Eljárás Sub eljárásnév ([f_parlista]) [deklarációs rész] eljárástörzs End Sub Pénzügyi feladatok VBA támogatása – 6. előadás5 / 45

6 A rutinfej Függvény Function függvénynév ([f_par1ista)]) [As típusnév] [deklarációs rész] függvénytörzs függvénynév = kifejezés End Function Pénzügyi feladatok VBA támogatása – 6. előadás6 / 45

7 A rutinfej A rutinok neve után kötelezően ki kell tenni a két zárójelet. Nem kötelező megadni a függvények típusát; ha ezt elhagyjuk, a függvény is az alapértelmezett (Variant) típust kapja. A formális paraméterlista (f_parlista) elhagyható, de ha szerepel, akkor a formális paraméterek nevének és típusának vesszővel elválasztott felsorolásából áll: fparnév1[As típusnév1][,fparnév2[As tipusnév2][,... ]] Pénzügyi feladatok VBA támogatása – 6. előadás7 / 45

8 A rutinfej fparnév1[As típusnév1][,fparnév2[As tipusnév2][,... ]] A formális paraméterek száma tetszőleges, és bármelyikük típusa tetszőlegesen megadható vagy elhagyható. Definiálásuk egyenértékű lokális változók deklarálásával, → nevük nem ütközhet más lokális deklarációkkal, és nem létezik a rutinon kívül. A rutinon belül ugyanúgy használhatók, mint bármely másik lokálisan deklarált változó, és típusuk is tetszőleges beépített vagy felhasználói típus lehet. Pénzügyi feladatok VBA támogatása – 6. előadás8 / 45

9 A rutinfej fparnév1[As típusnév1][,fparnév2[As tipusnév2][,... ]] Amelyik paraméter neve után nincs típusmegadás, alapértelmezett (Variant) típusú lesz. Ha egy formális paraméter neve megegyezik egy magasabb szinten deklarált konstans vagy változó nevével, akkora rutinon belül a formális paraméter érvényes, és a magasabb szintű objektum nem érhető el. Pénzügyi feladatok VBA támogatása – 6. előadás9 / 45

10 A rutinfej Lényeges különbség a lokális változók és a formális paraméterek között! A formális paraméterek a rutin aktiválásakor a hívó rutintól kapnak kezdőértéket. Pénzügyi feladatok VBA támogatása – 6. előadás10 / 45

11 A rutinfej A hívónak pontosan ugyanannyi és ugyanolyan (vagy illeszthető) típusú értéket kell ugyanabban a sorrendben átadnia, ahány formális paramétere van a meghívott rutinnak. Két paraméter átadási mód létezik: Cím szerinti Érték szerinti Pénzügyi feladatok VBA támogatása – 6. előadás11 / 45

12 A rutinfej Cím szerinti paraméter átadás Ez az alapértelmezett. A ByRef kulcsszóval lehet jelezni, de kiírása nem kötelező. A formális paraméter megkapja a hívó rutin megfelelő aktuális paraméterének címét. Ha egy művelet megváltoztatná a formális paraméter „értékét”, akkor valójában a címen keresztül az aktuális paraméteré változik meg! Szokás ezért az ilyen formális paramétert kimenő paraméternek is nevezni. Nem lehet konstans! Pénzügyi feladatok VBA támogatása – 6. előadás12 / 45

13 A rutinfej Érték szerinti paraméter átadás A ByVal kulcsszóval adjuk meg. A formális paraméter megkapja a hívó rutin megfelelő aktuális paraméterének értékét. Ha egy művelet megváltoztatja a formális paraméter „értékét”, akkor ez sehogy nem hat az aktuális paraméter értékére! Szokás ezt bemenő paraméternek nevezni. Az ilyen formális paramétert magasabb szintű konstanssal is meg lehet hívni. Pénzügyi feladatok VBA támogatása – 6. előadás13 / 45

14 A rutinfej Két kivétel a paraméter átadásnál: 1: Nem kötelezőértéket adni azoknak a feltételes formális paramétereknek, amelyek előtt Optional kulcsszó áll, ekkor az aktuális paraméter átadása elhagyható. Ha az Optional kulcsszót egyszer kiírtuk, akkor már csak további feltételes formális paraméterek szerepelhetnek, és mindegyik előtt ki kell írni az Optional kulcsszót. Pénzügyi feladatok VBA támogatása – 6. előadás14 / 45

15 A rutinfej Két kivétel a paraméter átadásnál: 1: Az Optional paraméternek akár cím-, akár érték szerinti paraméter-átadással is lehet értéket átadni. Az is megengedett, hogy egy feltételes formális paraméternek a rutinfejben adjunk értéket, s ha a hívó nem ad meg mást, a rutinban az így deklarált kezdőérték lesz érvényben. Pénzügyi feladatok VBA támogatása – 6. előadás15 / 45

16 A rutinfej Két kivétel a paraméter átadásnál: 2: Ha a formális paraméterlista utolsó eleme előtt ParamArray kulcsszó áll, azt jelenti, hogy ez a paraméter tetszőleges elemszámú, ám kizárólag csak Variant típusú elemekből álló tömb. Ez a kulcsszó nem használható sem az Optional sem a ByVal kulcsszóval együtt, vagyis híváskor legalább egy tömbelem megadása kötelező, és ez nem lehet konstans. Később. Pénzügyi feladatok VBA támogatása – 6. előadás16 / 45

17 Lokális (rutin szintű) deklarációk A rutinokban is explicit deklarációt használunk, minden lokális konstanst és változót deklarálunk. A lokális nevek megegyezhetnek a modális vagy a globális nevekkel → félreértésekhez vezethet! Ilyen esetekben mindig a legalacsonyabb szintű név van érvényben. Rutinon belül nem lehet globális konstanst vagy változót deklarálni. Az implicit változók is mindig lokálisak → a deklarációk szintaxisa is egyszerűbb. Pénzügyi feladatok VBA támogatása – 6. előadás17 / 45

18 Lokális (rutin szintű) deklarációk Konstansok deklarálása Const konstnévl = kifejezésl[,konstnév2 = kifejezés2[,..i]] A konstansok általában globálisak vagy modálisak, így lehet lokális konstansokat is deklarálni. Ezek a rutin aktiválásakor, az inicializálás során kapnak értéket. Pénzügyi feladatok VBA támogatása – 6. előadás18 / 45

19 Lokális (rutin szintű) deklarációk Változók deklarálása {Dim|Static} név1 [As típusnév1] [‚ név2 [As típusnév2]...] A szabályok ugyanazok, mint a globális deklarációnál. Ha a névlista egynél több változónevet tartalmaz, ezeket vesszővel kell elválasztani. Ha egy név után nem adunk meg típusnevet, az illető változó az alapértelmezett ( Variant ) típust kapja. Pénzügyi feladatok VBA támogatása – 6. előadás19 / 45

20 Lokális (rutin szintű) deklarációk A rutinok aktiválásakor a lokális konstansok megkapják értéküket A VBA az első rutinhívás alkalmával típusuknak megfelelő kezdőértékkel feltölti az összes lokális változót. Újbóli meghívás esetén azonban a statikusakat változókat nem kell inicializálni. A Static kulcsszóval deklarált változók értéke a rutin befejeződése után is megmarad addig, amíg a modullap nyitott állományban van. Pénzügyi feladatok VBA támogatása – 6. előadás20 / 45

21 Lokális (rutin szintű) deklarációk A Dim kulcsszóval deklarált változók értéke a rutin befejeződésekor elveszik. Ez elkerülhető, ha magát a rutint deklaráljuk statikusnak, ekkor a lokális változóinak értéke kilépéskor nem sérül. Pénzügyi feladatok VBA támogatása – 6. előadás21 / 45

22 A rutintörzs felépítése A rutintörzset utasítások alkotják. Hatásuk szerint megkülönböztethetünk aritmetikai, logikai és szöveges értékadó, vezérlő (elágaztató, ciklusképző, ugró, rutinhívó), be/kimeneti (adatbekérő és üzenet kiíró, állománykezelő), objektum-kezelő (létrehozó, átalakító, tulajdonság- módosító) utasításokat. Pénzügyi feladatok VBA támogatása – 6. előadás22 / 45

23 A rutintörzs felépítése A rutintörzsben nem állhat újabb rutinfej, azaz a rutinokat nem lehet egymásba ágyazni! Részletesen az értékadó és a rutinon belüli vezérlő utasításokról lesz szó. A be/kimeneti és az objektum-kezelő utasítások használatát mintapéldákon keresztül nézzük meg. Pénzügyi feladatok VBA támogatása – 6. előadás23 / 45

24 A rutintörzs felépítése Jobb olvashatóság és könnyebb áttekintés érdekében egy sorba általában csak egy utasítást írunk; de megengedett egy utasítást több sorban, illetve több utasítást egy sorban írni. A folytató sort _ (szóköz + alsó kötőjel) kapcsolja az előzőhöz Egy soron belül az utasításokat : (kettőspont) választja el. A vezérlő utasításoknak mindig 1 sorban kell állniuk! Pénzügyi feladatok VBA támogatása – 6. előadás24 / 45

25 Értékadó utasítások változónév = kifejezés A kifejezés: nevek, számok, illetve szövegek operátorokkal összekapcsolt sorozata, amely egy — a kifejezés típusától függő — értéket eredményez. A nevek (akár beépített Excel vagy VB, akár felhasználói) konstansok, változók, függvények vagy objektumok szimbólumai. Pénzügyi feladatok VBA támogatása – 6. előadás25 / 45

26 Értékadó utasítások Az utasítás hatására a bal oldali változó felveszi a kifejezés által előállított értéket, vagyis az értékadás jobbról balra történik! Ha a bal oldali változó típusával nem azonos a kifejezés által előállított érték típusa, a fordító megkísérli ezt átváltani a megfelelő típusúra; nem illeszthető (inkompatíbilis) típusok esetén hibajelzést ad. Pénzügyi feladatok VBA támogatása – 6. előadás26 / 45

27 Értékadó utasítások Az operátorok típusa: Értékadó: aritmetikai (A), logikai (L), szöveges (Sz); Összehasonlító (H ). Pénzügyi feladatok VBA támogatása – 6. előadás27 / 45

28 Értékadó utasítások Az operátoroknak precedencia-rendje van, ami az általuk meghatározott műveletek sorrendjét határozza meg. Ha egy kifejezésben nincs zárójel, a műveletek végrehajtása az operátorok precedenciájának megfelelő sorrendben történik. Azonos rangú operátorok által kijelölt műveletek előfordulásuk sorrendjében, balról jobbra haladva hajtódnak végre. Pénzügyi feladatok VBA támogatása – 6. előadás28 / 45

29 Értékadó utasítások A precedencia-rend szerinti sorrendet zárójelpárok alkalmazásával lehet megváltoztatni. Ha ilyenek vannak, akkor először a zárójeles kifejezések értékelődnek ki; természetesen a precedenci-rend figyelembevételével. Zárójelpárok tetszőleges mélységben egymásba ágyazhatók, ekkor a kiértékelés belülről kifelé haladva történik. Pénzügyi feladatok VBA támogatása – 6. előadás29 / 45

30 Értékadó utasítások TípusJelKijelölt művelet (Precedencia-rendben) A ^ Hatványozás A - Negatív előjel A * / Szorzás, lebegőpontos osztás A \ Egész osztás hányadosa A Mod Egész osztás maradéka A + — Összeadás, kivonás Sz & Karakterláncok összefűzése (előtte-utána szóköz!) H = > <> Relációs operátorok (kifejezések összehasonlítására: kisebb, kisebb vagy egyenlő, egyenlő, nagyobb vagy egyenlő, nagyobb, illetve nem egyenlő) H Like Karakterlánc-minták összehasonlítása L Not NEM (logikai inverz) L And És L Or Megengedő VAGY L Xor Kizáró VAGY (csak modullapon) L Eqv Ekvivalencia (csak modullapon) L Imp lmplikáció (csak modullapon) H Is Objektumvákozók összehasonlítása Pénzügyi feladatok VBA támogatása – 6. előadás30 / 45

31 Értékadó utasítások Műveletvégzés során bonyolult típusváltási (konverziós) szabályok érvényesek, különösen akkor, ha Variant altípusok is előfordulnak. → Súgó A legfontosabb alapelvek a következők: Aritmetikai műveletvégzés (A operátorok) esetén az eredmény típusa általában a kifejezésekben előforduló legpontosabb típusú változóéval azonos. Ha túlcsordulás keletkezik, az eredmény Double típusú lesz. A növekvő pontossági sorrend: Byte - Integer - Long - Currency - Decimal - Single - Double. (3. ea. 14#) Pénzügyi feladatok VBA támogatása – 6. előadás31 / 45

32 Értékadó utasítások A \ és a Mod műveletben a nem egész típusú tényezők egészre kerekített értékükkel vesznek részt. Típusváltást konverziós függvényekkel kényszeríthetünk ki Cbyte → Byte,CInt → Integer, CLng → Long,CSng → Single, CDbl → Double,CCur → Currency, CStr → String,CVAr → Variant CDate → Date (ha dátumként értelmezhető) típusúra váltja a paraméterként megadott kifejezést. Pénzügyi feladatok VBA támogatása – 6. előadás32 / 45

33 Értékadó utasítások Numerikus típusú tényezők összehasonlítása (H operátorok) numerikusan, a string típusúaké karakteresen történik; az eredmény mindig Boolean típusú ( True vagy False ) érték. Ha az egyik tényező numerikus és a másik string típusú, de számként értelmezhető, az összehasonlítás ugyancsak numerikus; ellenkező esetben hibajelzést kapunk. A szövegkifejezés1 Like szövegkifejezés2 összehasonlítás eredménye akkor True, ha a második kifejezés által előállított karakterlánc - az esetleges helyettesítő karakterek figyelembevételével - előfordul az elsőben. Pénzügyi feladatok VBA támogatása – 6. előadás33 / 45

34 Értékadó utasítások A szövegkifejezésekben használható helyettesítő karakterek (HK), illetve karaktercsoportok HKÉrtelmezés * Akárhány (akár 0 számú), tetszőleges karakter ? Egyetlen, tetszőleges karakter # Egyetlen számjegy [E-H] Az E és H közötti karakterek, a határokat is beleértve; növekvő sorrend kötelező! [!E-HJ Minden karakter az E és H közötti karakterek kivételével ! [*] [?] [-] [] Felkiáltójel (szögletes zárójelen kívül), * ‚ ?‚ -,üres string Pénzügyi feladatok VBA támogatása – 6. előadás34 / 45

35 Értékadó utasítások Néhány példa True értéket adó összehasonlításra: ”alfa” Like ”a*a” ”a2a” Like ”a#a” ”FAL” Like ”[A-L]” ”BATMAN-13” Like ”B?T*” ”abc” Like ”[!d—z]” ”amőba5” Like ” a[l-p]?[!c-e)*#”. Pénzügyi feladatok VBA támogatása – 6. előadás35 / 45

36 Értékadó utasítások Az objektum(változó)1 Is objektum(változó)2 összehasonlítás eredménye akkor True, ha a két objektum azonos, vagy ugyanazon objektumosztály két egyede; illetve ha a két objektum-változó ugyanahhoz az objektumhoz van rendelve. Logikai ( Boolean ) típusú kifejezések közötti logikai műveletek (L operátorok) eredménye Boolean típusú; más típusok esetében bitenként történik a logikai műveletvégzés, és az eredeti típus nem változik meg. Pénzügyi feladatok VBA támogatása – 6. előadás36 / 45

37 Vezérlő utasítások A rutinokon belül elágazásképző, ciklusképző és ugró, illetve rutinhívó utasításokkal változtathatjuk meg az utasítások végrehajtási sorrendjét. A strukturált programozásról mondottak értelmében ugró utasításokat tilos használni, ezekkel nem is foglalkozunk. Egyetlen kivétel a futás közben fellépő hibák kezelése (később). Eddig megírt makróink mindig egymás után, feltétel nélkül végrehajtandó utasításokból, vagyis szekvenciákból álltak. Pénzügyi feladatok VBA támogatása – 6. előadás37 / 45

38 Vezérlő utasítások Elágazások A számítógép az utasításokat általában sorrendben hajtja végre. Elágazásra akkor kerül sor, ha egyes utasításcsoportokat csak bizonyos feltételek teljesülése (vagy nem teljesülése) esetén kell végrehajtani. Ilyenkor a szekvencia megszakad, és egyes utasításcsoporrok ki maradnak a végrehajtásból. Pénzügyi feladatok VBA támogatása – 6. előadás38 / 45

39 Vezérlő utasítások Elágazások Kétféle elágazásképző utasítás van 1. Az If - Then - Else (ha - akkor - különben) utasítás alapvetően kétágú elágazások kialakítására szolgál, bár egyágúak, és - ElseIf kulcsszóval - többágúak létrehozására is alkalmas. Pénzügyi feladatok VBA támogatása – 6. előadás39 / 45

40 Vezérlő utasítások Elágazások 1 If feltétel1 Then utasításcsoport1 (végrehajtódik, ha feltétel = True ) [ElseIf feltétel2 Then utasításcsoport2 (végrehajtódik, ha feltétel1 = False és feltétel2 = True ) … ] [Else utasításcsoportn (végrehajtódik, ha minden előző feltétel = False ) ] End If Pénzügyi feladatok VBA támogatása – 6. előadás40 / 45

41 Vezérlő utasítások Elágazások 1 Bármelyik utasításcsoport tetszőleges számú utasításból állhat. A feltételeknek megfelelő (egyetlen) utasításcsoport végrehajtása után a program az End If sort követő utasítás végrehajtásával folytatódik. Ha egyik feltétel sem teljesül, és nincs Else ág akkor egyik utasításcsoport sem hajtódik végre. Pénzügyi feladatok VBA támogatása – 6. előadás41 / 45

42 Vezérlő utasítások Elágazások 2 A Select Case... End Select utasítást főleg akkor használjuk, ha az elágazásokat kettőnél több feltétel szerint akarjuk végrehajtani. Ilyenkor az elágazási feltételeket Case kulcsszó után kell megadni. Pénzügyi feladatok VBA támogatása – 6. előadás42 / 45

43 Vezérlő utasítások Elágazások 2 Select Case változónév Case értéklista1 utasításcsoport1 (végrehajtódik, ha a változó aktuális értéke az 1. listába esik) Case értéklista2 utasításcsoport2 (végrehajtódik, ha a változó aktuális értéke a 2. listába esik) [Case Else utasításcsoport (végrehajtódik, ha a változó aktuális értéke egyik listába sem esik) ] End Select Pénzügyi feladatok VBA támogatása – 6. előadás43 / 45

44 Vezérlő utasítások Elágazások 2 Az értéklista vagy konkrét értékek felsorolása, vagy Is kulcsszóval bevezetett tartományok meghatározása lehet, az utóbbi esetben kifejezéseket is írhatunk. Az alábbi két forma egyenértékű: Case 1,2,3,4 illetve Case Is >=1 And <=4 Pénzügyi feladatok VBA támogatása – 6. előadás44 / 45

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


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

Hasonló előadás


Google Hirdetések