Változók és konstansok megértése Excel makrókban

Ebből a cikkből megtudhatja, milyen állandók és változók vannak a makrókban, hol használhatók, és mi a fő különbség a különböző adattípusok között. Az is kiderül, miért van szükség konstansokra, ha csak egy változót tudsz írni, és soha nem változtatsz rajta.

Más programozási nyelvekhez hasonlóan az adatok változókban vagy konstansokban tárolhatók (mindkettőt gyakran adattárolónak is nevezik). Ez a fő különbség e fogalmak között. Az előbbi változhat attól függően, hogy mi történik a programban. Az állandók viszont egyszer vannak beállítva, és nem változtatják meg az értéküket.

A konstansok hasznosak lehetnek, ha ugyanazt a nagy értéket többször kell használni. A szám másolása helyett egyszerűen beírhatja a konstans nevét. Például használhatja a „Pi” állandót a Pi tárolásához, amely állandó érték. Nagyon nagy, és minden alkalommal meglehetősen nehéz megírni vagy megkeresni és másolni. Tehát elég két karaktert írni, és a környezet automatikusan a kívánt számot használja.

Az Excel felhasználónak deklarálnia kell a változókat, ha időnként módosítania kell a bennük tárolt értéket. Például beállíthat egy sVAT_Rate nevű változót, amely tárolja a termék aktuális áfakulcsát. Ha megváltozik, gyorsan kijavíthatja. Ez különösen hasznos azoknak, akik az Egyesült Államokban folytatnak üzleti tevékenységet, ahol egyes áruk egyáltalán nem tartoznak az áfa alá (és ez az adó is államonként eltérő).

Adattípusok

Minden adattároló többféle típusú lehet. Itt van egy táblázat, amely leírja a feldolgozott információk szabványos típusait. Sok van belőlük, és egy kezdő számára elsőre úgy tűnhet, hogy ismétlik egymást. De ez egy illuzórikus érzés. Olvassa el, hogy megtudja, miért olyan fontos a helyes adattípus megadása.

Kis számok esetén nem ajánlott olyan adattípust használni, amely több helyet foglal el a memóriában. Például az 1-es számhoz elegendő a Byte típust használni. Ez pozitív hatással lesz a végrehajtható modul teljesítményére, különösen gyenge számítógépeken. De fontos, hogy itt ne menjünk túl messzire. Ha túl kompakt adattípust használ, előfordulhat, hogy túlméretezett érték nem fér bele.

Állandók és változók deklarálása

Erősen nem javasoljuk az adattárolók előzetes bejelentés nélküli használatát. Ekkor számos probléma adódhat, amelyek elkerülése érdekében néhány kisebb kódsort kell írni változók vagy konstansok felsorolásával.

Egy változó deklarálásához a Dim utasítást használjuk. Például így:

Dim Variable_Name As Integer

A Variable_Name a változó neve. Ezután az As operátor kerül kiírásra, amely jelzi az adattípust. A „Variable_Name” és „Integer” karakterláncok helyett megadhatja saját nevét és adattípusát.

A konstansok deklarálhatók is, de először meg kell adni az értéküket. Az egyik lehetőség a következő:

Állandó iMaxCount = 5000

Az igazság kedvéért, bizonyos esetekben megteheti a változó deklarálása nélkül is, de ebben az esetben automatikusan a Variant típust kapják. Ez azonban nem javasolt a következő okok miatt:

  1. A Változat feldolgozása sokkal lassabban történik, és ha sok ilyen változó van, akkor az információfeldolgozás jelentősen lelassulhat a gyenge számítógépeken. Úgy tűnik, ezek a másodpercek döntenek majd? De ha sok sornyi kódot kell írnia, majd gyenge számítógépeken is futtatnia kell (amelyeket még mindig értékesítenek, mivel a modern irodai csomagok sok RAM-ot igényelnek), teljesen leállíthatja a munkát. Vannak esetek, amikor a makrók rosszul átgondolt írása a kis RAM-mal rendelkező, és nem összetett feladatok elvégzésére tervezett okoskönyvek lefagyásához vezetett. 
  2. Nyomtatási hibák a nevekben megengedettek, ami az Option Explicit utasítással akadályozható meg, amely lehetővé teszi egy nem deklarált változó megtalálását, ha talált ilyet. Ez egy egyszerű módja a hibák észlelésének, mivel a legkisebb elírási hiba miatt az értelmező nem tudja azonosítani a változót. És ha bekapcsolja a változó deklarációs módot, az interpreter egyszerűen nem engedi futtatni a makrót, ha olyan adattárolókat talál, amelyeket nem deklaráltak a modul legelején.
  3. Kerülje el azokat a hibákat, amelyeket az adattípusnak nem megfelelő változóértékek okoznak. Általában egy szöveges érték hozzárendelése egy egész változóhoz hibát okoz. Igen, egyrészt deklaráció nélkül is hozzárendelnek egy általános típust, de ha előre deklarálják, akkor elkerülhetők a véletlenszerű hibák.

Ezért mindennek ellenére erősen ajánlott minden változót deklarálni az Excel makrókban.

A változók deklarálásakor még egy dolgot kell szem előtt tartani. Lehetséges, hogy egy változóhoz ne rendeljünk értéket a deklaráláskor, de ebben az esetben alapértelmezett értéket kap. Például:

  1. A sorok üresek.
  2. A számok 0 értéket vesznek fel.
  3. A Boolean típusú változókat kezdetben hamisnak tekintjük.
  4. Az alapértelmezett dátum 30. december 1899.

Például nem kell 0 értéket rendelnie egy egész változóhoz, ha korábban nem adott meg értéket. Már tartalmazza ezt a számot.

Opció Explicit nyilatkozat

Ez az utasítás lehetővé teszi, hogy deklarálja a VBA-kódban használt összes változót, és meghatározza a nem deklarált tárolók jelenlétét a kód futtatása előtt. A funkció használatához egyszerűen írjon egy sort az Option Explicit kódból a makrókód legtetejére.

Ha ezt az utasítást minden alkalommal bele kell foglalnia a kódjába, ezt a VBA-szerkesztő speciális beállításával teheti meg. Az opció engedélyezéséhez a következőket kell tennie:

  1. Nyissa meg a fejlesztői környezetet az útvonal mentén – Eszközök > Beállítások.
  2. Az ezután megnyíló ablakban nyissa meg a Szerkesztő lapot.
  3. Végül pedig jelölje be a Változódeklaráció megkövetelése elem melletti négyzetet.

A lépések elvégzése után kattintson az „OK” gombra. 

Ez az, most minden új makró írásakor ez a sor automatikusan bekerül a kód tetejére.

Az állandók és változók köre

Minden változónak vagy állandónak csak korlátozott hatóköre van. Attól függ, hol deklarálod.

Tegyük fel, hogy van egy függvényünk Összköltsége(), és a változót használja sVAT_Rate. A modulban elfoglalt pozíciótól függően eltérő hatókörrel rendelkezik:

Explicit lehetőség

Dim sVAT_Rate As Single

Függvény Total_Cost() As Double

.

.

.

end Function

Ha egy változó egy modul tetején van deklarálva, akkor az a modulon keresztül terjed. Vagyis minden eljárással leolvasható.

Sőt, ha az egyik eljárás megváltoztatta a változó értékét, akkor a következő is beolvassa ezt a javított értéket. Más modulokban azonban ez a változó továbbra sem olvasható.

Explicit lehetőség

Függvény Total_Cost() As Double

Dim sVAT_Rate As Single

   .

   .

   .

end Function

Ebben az esetben a változót az eljáráson belül deklarálják, és az interpreter hibát dob, ha egy másik eljárásban használják.

Ha azt szeretné, hogy a változót más modulok is olvassák, akkor a Dim kulcsszó helyett a Public kulcsszót kell használnia. Hasonlóképpen korlátozhatja egy változó hatókörét csak az aktuális modulra a Public utasítás használatával, amely a Dim szó helyett íródik.

Hasonló módon beállíthatja az állandók hatókörét, de a kulcsszó itt a Const operátorral együtt van írva.

Íme egy táblázat egy jó példával arra, hogyan működik konstansokkal és változókkal.

Explicit lehetőség

Nyilvános sVAT_Rate As Single

Nyilvános Const iMax_Count = 5000

Ebben a példában láthatja, hogyan használják a Public kulcsszót egy változó deklarálására, és mit kell beírnia a Visual Basic szerkesztőbe egy nyilvános állandó deklarálásához. Ezen értéktárolók hatóköre minden modulra vonatkozik.
Explicit lehetőség

Privát sVAT_Rate As Single

Privát Const iMax_Count = 5000

Itt a változók és konstansok a Private kulcsszóval vannak deklarálva. Ez azt jelenti, hogy csak az aktuális modulon belül láthatók, és más modulok eljárásai nem használhatják őket.

Miért van szükség állandókra és változókra?

A konstansok és változók használata lehetővé teszi a kód érthetőségének növelését. És ha a kezdőknek általában nincs kérdése, hogy miért van szükség változókra, akkor sok kétértelműség merül fel a konstansok szükségességével kapcsolatban. És ez a kérdés első pillantásra egészen logikusnak tűnik. Végül is egyszer deklarálhatsz egy változót, és soha többé nem változtathatod meg.

A válasz valahol ugyanabban a síkban van a memóriában nagy helyet foglaló adattípusok használatával kapcsolatban. Ha nagyon sok változóval van dolgunk, véletlenül megváltoztathatunk egy meglévő tárolót. Ha a felhasználó azt írja elő, hogy egy bizonyos érték soha nem fog változni, akkor ezt a környezet automatikusan szabályozza.

Ez különösen fontos, ha a makrót több programozó írja. Lehet tudni, hogy néhány változónak nem szabad megváltoznia. A másik pedig nem. Ha megadja a Const operátort, egy másik fejlesztő tudni fogja, hogy ez az érték nem változik.

Vagy ha van egy konstans egy névvel, és a változónak más a neve, de hasonló. A fejlesztő egyszerűen összezavarhatja őket. Például egy olyan változót, amelyet nem kell megváltoztatni, Változó11-nek, egy másik szerkeszthető változót Változó1-nek hívnak. Egy személy automatikusan, amikor kódot ír, véletlenül kihagyhat egy extra egységet, és nem veszi észre. Ennek eredményeként az értékek tárolója megváltozik, amelyet nem szabad megérinteni.

Vagy maga a fejlesztő elfelejtheti, hogy mely változókat érintheti meg és melyeket nem. Ez gyakran előfordul, ha a kódot több hétig írják, és a mérete megnő. Ez alatt az idő alatt nagyon könnyű elfelejteni azt is, hogy ez vagy az a változó mit jelent.

Igen, ebben a helyzetben megteheti a megjegyzéseket, de nem egyszerűbb a Const szó megadása?

Következtetések

A változók a makróprogramozás elengedhetetlen összetevői, amelyek lehetővé teszik összetett műveletek végrehajtását, a számításoktól a felhasználó tájékoztatásáig bizonyos eseményekről vagy konkrét értékek megadásától a táblázat celláiban.

A konstansokat akkor kell használni, ha a fejlesztő biztosan tudja, hogy ezeknek a tárolóknak a tartalma a jövőben nem változik. Javasoljuk, hogy ne használjunk helyette változókat, mert előfordulhat, hogy véletlenül hibázunk.

Hagy egy Válaszol