I. Változók
Mit is jelent a változó?
Egy ember esetében a születési dátuma egy konsans szám, azaz nem fog változni az évek során soha. Viszont az életkora már változik, így az egy változó, ami mellesleg szám típusú. Lakcíme is változó, mert bármikor elköltözhet, viszont az már egy szöveg típusú változó. Ha pedig azt kérdezzük, hogy „Magyar állampolgár?”, akkor arra igen vagy nem a válasz, azaz egy logikai változó (igaz vagy hamis).
– Plusz infó –
A számítógép-tudományban és a matematikában a változó egy mennyiség vagy egy objektum szimbolikus jelölése. A matematikában a változó gyakran egy ismeretlen mennyiséget jelent, míg a számítógép-tudományban azt a helyet értjük alatta, ahol egy mennyiséget tárolhatunk. A változókat gyakran a konstansokkal ellentétes értelemben használjuk, amik értéke ismert, és az nem változik.Forrás: Wikipédia
Excelben való programozásunk során gyakran fogunk változókat használni. Gondoljunk csak bele, ha például egy táblázat sorain akarunk végigmenni, akkor az éppen aktuális sornak a száma is egy változó lesz, hiszen mindig nő eggyel, ahogy haladunk előre.
Ahhoz, hogy változókkal dolgozzunk, már a programunk elején szükséges definiálni azokat. Meg kell határoznunk, hogy mi legyen a változó neve és mi legyen a típusa.
A leggyakoribb változó típusok az alábbiak, mellettük a VBA-ban használandó nevük.
– Szám – Integer vagy Long vagy Double (Hogy mi a különbség, arról később.)
– Szöveg – String
– Logikai (igaz, hamis) – Boolean
Egy bonyolultabb program sok memóriát ehet. Ha nagy számokkal dolgozunk, akkor nyilván lassabban fogja végrehajtani a műveleteket a makrónk. Éppen ezért, a szám változóknál van lehetőségünk előre megtervezni, hogy kisebb vagy nagyobb számokkal fogunk dolgozni.
Ha -32,768 és 32,767 között mozog a számunk, pl. egy életkor, akkor ajánlott az Integer típus használata, de ha nagyobb, -9,223,372,036,854,775,808 és 9,223,372,036,854,775,807 között lehet a változó értéke, akkor a Long-ot kell használni. Így az Integer kevesebb bitet fogyaszt, míg a Long többet.
Tovább bonyolítja a szám típusú változók helyzetét, hogy a Long és az Integer egész számokra vonatkoznak, így ha törttel akarunk számolni, akkor érdemes a Double-t alkalmazni.
A változók defináláskor a képlet a következő:
Dim eletkor as Integer
Dim lakhely as String
Dim tablazat_utolso_sora as Long
Dim hirlevelre_feliratkozott as Boolean
Azaz egy „Dim„-mel kezdünk (Declare in Memory rövidítése), utána jön a változó általunk meghatározott neve, majd azt követi egy „as„, végül pedig a típusa a változónak. Magyarunk meghatározunk egy változó nevet valamilyen változó típusként. Ezzel a névvel tudunk majd a későbbiekben dolgozni.
Példa 1:
Létrehozunk egy „szam” nevű szám típusú változót; meghatározzuk, hogy az értéke legyen 100; majd a „szam” nevű változót kiíratjuk egy párbeszédablakban.
Dim szam As Integer szam = 100 MsgBox szam
Példa 2:
Létrehozunk 3 új változót: vezetéknév, keresztnév, teljes név. A vezetéknévnek és a keresztnévnek adunk egy szöveges értéket. a Teljes név értéke pedig a vezetéknév és a keresztnév változó összefűzése lesz.
Dim vezetek_neve As String Dim kereszt_neve As String Dim teljes_nev As String vezetek_neve = "Kovács" kereszt_neve = "János" teljes_nev = vezetek_neve & " " & kereszt_neve Msgbox teljes_nev
Két különböző szöveget az „&” karakterrel tudunk összefűzni, ami két idézőjel közti szöveget fűzi össze. A fenti példában a változók tárolják az idézőjeles szöveget, a két alábbi kifejezés így teljesen megegyezik egymással:
teljes_nev = „Kovács” & ” ” & „János”
teljes_nev = vezetek_neve & ” ” & kereszt_neve
Ha csak ennyit írnánk: teljes_nev = „Kovács” & „János” , akkor a vezeték nevet és a keresztnevet szóköz nélkül, egybe fűzné. Éppen ezért a vezeték és a keresztnév közé fűztünk még egy szóközt is:
& ” ” &
Videón:
II. Matematikai műveletek
Jó hír, hogy a VBA-ban a matematikai műveletek teljesen maguktól értetődőek. Amiket mi használni fogunk:
Összeadás: +
Kivonás: –
Szorzás: *
Osztás /
Hatványozás: ^
Zárójel: ()
Amit már korábban is használtuk, egyenlőség jellel „=” tudunk valamihez értéket rendelni. Mindig előbb jön az, aminek értéket szeretnénk adni, majd az „=” jel után pedig az érték.
Példa 1:
Dim konverzio1 as Integer Dim konverzió2 as Integer Dim osszes_konverzio as Integer Osszes_konverzio = konverzio1 + konverzio2
Példa 2:
Tegyük fel, hogy a következő táblázatban szeretnénk kiszámolni egy hirdetés átkattintási arányát, azaz a CTR-t (Click-through rate).
A képlet a következő:
CTR = (Clicks / Impressions) *100
Számoljuk ki először csak a második sor CTR-jét.
Sub Makró1() 'Definiáljuk a változóinkat: Dim Impressions As Integer Dim Clicks As Integer Dim CTR As Double 'A változókhoz rendeljük a cellák értékeit: Impressions = Range("B2").Value Clicks = Range("C2").Value 'Számolás CTR = (Clicks / Impressions) * 100 'Kiírjuk a megfelelő cellába az eredményt: Range("D2").Value = CTR End Sub
A fenti kódban a zölddel írt ” ‘ ” jel után írt szöveg a komment. Minden szöveg, képlet, kód sor, ami előtt egy ‘ karakter van, azt figyelmen kívül fogja hagyni a program. Ez segíteni fog nekünk a jövőben, hogy átlássuk a kódjainkat.
Gyakorlati feladat
Az utolsó feladatból fogunk kiindulni.
1. A G1 cella környékére tegyünk egy gombot, ami lefuttatja a programunkat.
2. Az F1 cellába, ha beírunk egy számot akkor arra a sorra fogja nézni a programunk a feladatot. Tehát, ha az F1 cella értéke 3, akkor a 3. Sor értékeivel számolja ki a CTR-t és a D3 cellába írja a végeredményt.
Segítség 1. – Kell egy új változó, ami a számunkra szükséges sor számát tartalmazza.
Segítség2. – Range helyett Cells-t fogunk itt alkalmazni.
Megoldás a videón, magyarázó szöveggel:
A teljes kód:
Sub Makró1() 'Definiáljuk a változóinkat: Dim Impressions As Integer Dim Clicks As Integer Dim CTR As Double sor As Integer 'Megadjuk az éppen aktuális sort sor = Range("F1").Value 'A változókhoz rendeljük a cellák értékeit: Impressions = Cells(sor, 2).Value Clicks = Cells(sor, 3).Value 'Számolás CTR = (Clicks / Impressions) * 100 'Kiírjuk a megfelelő cellába az eredményt: Cells(sor, 4).Value = CTR End Sub
Összefoglalás
– Megnéztünk pár fontos változót, megtanultuk definiálni azokat
– Megnéztük a legfontosabb matematikai műveleteket
– Megtanultuk, hogy két szöveget az “&” karakterrel tudunk összefűzni
– Megtanultuk, hogy a VBA kódunkba “ ‘ “ karakterrel tudunk kommentelni