vba variables option explicit vba
Tento kurz vysvětluje, jak deklarovat a používat proměnné VBA. Další informace o explicitní možnosti, variabilním rozsahu, statických a konstantních proměnných:
V počítači jsou všechny hodnoty dat uloženy v paměti nebo v paměti počítače. Chcete-li získat přístup k těmto hodnotám, musíte zadat název přidružený k této hodnotě, který se v programovacích jazycích nazývá proměnná.
V tomto kurzu se naučíme deklarovat a definovat proměnnou spolu s různými typy rozsahů proměnných a podrobně prozkoumat proměnné Static a Constant.
=> Podívejte se sem a podívejte se na A-Z výukových kurzů VBA
Co se naučíte:
Proměnné VBA
Proměnné jsou jako zástupné symboly pro hodnoty v úložišti počítače. Proměnné mohou obsahovat různé varianty hodnot a tyto hodnoty se mohou během provádění kódu změnit.
Každá proměnná bude mít název, který se použije pro přístup k hodnotě. VBA má určitá omezení, pokud jde o výběr názvu.
Níže je uveden seznam omezení:
- Název vaší proměnné nesmí být delší než 255 znaků.
- Název proměnné nemůže začínat číslem.
- Nemůžete začínat speciálními znaky, jako jsou!, @, &,., #, Nebo nemůžete mít mezery.
- Klíčová slova se nepovažují za název proměnné.
Pokud překročíte tato omezení, kompilátor vyvolá chybu
Příklad:
Platné názvy proměnných: varName, Result12, First_Number
Neplatné názvy proměnných: 123abc, #number, Sub, abc.123
První číslo (mezera mezi slovy není povolena)
Deklarace proměnné VBA
Musíme použít Žádný klíčové slovo pro deklaraci proměnné. Při deklaraci proměnné existují 2 oddíly. 1Svatýje název proměnné a 2ndje typ hodnoty, která má být uložena v proměnné, která se nazývá datový typ.
Syntaxe: Dim VariableName jako DataType
Příklad:
- Dim MyAge jako celé číslo
- Dim My_Percentage jako Double
- Dim Full_Name jako řetězec
Zde výslovně říkáte kompilátoru, že moje proměnná by měla ukládat pouze tyto typy dat a VBA se ujistí, že hodí chybu nesouladu typu kompilátoru, když hodnota definovaná pro proměnnou neodpovídá datovému typu.
Příklad:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Pokud si však nejste jisti datovým typem proměnné, pak vám VBA umožňuje přeskočit datový typ. Platí také níže uvedená syntaxe.
Dim VariableName
Když nedeklarujete datový typ proměnné, pak s ním VBA zachází jako s datovým typem Variant a je vázán přijmout jakýkoli typ datového čísla jako celé číslo, řetězec, sešit atd. Ve stejném programu Variabilní proměnné mohou přijímat také řetězcovou hodnotu, celočíselnou hodnotu a jakýkoli jiný typ.
Sub VarientVariable() Dim Total_Marks Total_Marks = '' MsgBox Total_Marks Total_Marks = 544.33 MsgBox Total_Marks Total_Marks = 522 MsgBox Total_Marks End Sub
Jelikož je Total_Marks variantní proměnnou, na rozdíl od předchozího kódu kompilátor nevyhodí žádnou chybu, jak je uvedeno níže.
Poznámka: Nezapomeňte, že VBA vám umožňuje použít proměnnou, aniž byste ji vlastně deklarovali.
Níže uvedený příklad kódu také poskytuje správný výsledek. V tomto případě VBA automaticky považuje proměnnou za datový typ Variant. Tomu se říká implicitní deklarace.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Výhody deklarace proměnné
- Snadné ladění: Je dobrým zvykem deklarovat proměnnou před jejím použitím. Poskytuje nám dřívější porozumění chybám, jako je nesoulad typů a chyby překlepů, čímž se snižuje riziko odchýlení se od logiky programu.
- Lepší čitelnost: Jako tým se na kód bude dívat mnoho lidí a deklarace proměnné pomůže každému s typem hodnot, které proměnná očekává, a také pomůže uživatelům při provádění programu zadat příslušné vstupní hodnoty.
- Úložný prostor: Pokud nedeklarujete proměnnou, pak ji VBA považuje za datový typ Variant, který ve srovnání s jinými datovými typy zabírá největší místo v paměti (16 bajtů až 22 bajtů). Například, pokud používáte proměnnou typu Byte, která má pouze 1 bajt a pokud nedeklarujete, VBA si nakonec rezervuje prostor 16 bajtů, čímž ztrácí paměť.
Možnost Explicit
Abychom zajistili, že jsou všechny proměnné výslovně deklarovány, musíme před jejich použitím použít příkaz Option Explicit. Mělo by být použito na začátku jakékoli procedury v daném modulu.
Podívejme se na příklad, který nepoužívá možnost Explicit Statement.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Spusťte kód (stiskněte klávesu F5 nebo spusťte tlačítko na panelu nástrojů) a nakonec získáte prázdné pole pro zprávu.
I když jste proměnnou deklarovali, skončili jste v prázdném poli s výsledky kvůli překlepu v Msgbox Firt_Name. Možnost Explicit nám pomůže tyto chyby eliminovat.
Zopakujme stejný kód pomocí Option Explicit. Před zahájením procedury zadejte možnost Explicit.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Nyní, pokud spustíte kód (na panelu nástrojů stiskněte klávesu F5 nebo Spustit) a nakonec se zobrazí chyba kompilátoru.
Můžete přidat VBA Možnost Explicit automaticky.
V editoru VB, Přejděte na Nástroje -> Možnosti -> Vyberte „Vyžadovat deklaraci proměnné“.
Nyní Možnost Explicit bude automaticky přidáno pokaždé, když vložíte nový modul nebo zaznamenáte nové makro.
Poznámka: Možnost Explicit nebude přidána do stávajícího kódu VBA. V případě potřeby jej musíte přidat ručně.
Přiřazení hodnoty proměnné
Hodnoty lze proměnným přiřadit pomocí symbolu rovná se (=). Pokud odkazujete na buňku v aplikaci Excel, musíte použít funkce Rozsah.
Viz níže uvedený kód.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
Ve výše uvedeném příkladu je var1 proměnná, která ukládá hodnotu 10 přímo pomocí (=) a funkce Range pomůže zadat hodnotu var1, která je 10 v buňce Excel C1 až C14.
Rozsah proměnné
Každá proměnná v programu bude mít definovaný rozsah. Tento rozsah říká programu oblasti, ve kterých je proměnná viditelná, tj. Modul nebo funkce, které mohou nebo nemohou proměnnou používat.
VBA má pro proměnnou definovány 3 typy oboru.
- Rozsah na úrovni procedur
- Soukromý obor na úrovni modulu
- Veřejný rozsah na úrovni modulu
Rozsah na úrovni postupu
Proměnné definované v proceduře, tj. V Sub nebo Function, je budou moci pouze použít. Ty nejsou viditelné pro žádný jiný postup.
Příklad:
Option Explicit Sub ProcScope() Dim msg As String vartext = 'Varible is visible only inside this Sub' MsgBox vartext End Sub Sub VarNotVisible() MsgBox vartext End Sub
Když spustíte výše uvedený kód, pro první Sub msgbox vrátí správný výsledek, ale pro druhý Sub bude vyvolána chyba kompilátoru. Protože proměnná vrcholu je viditelná pouze pro 1Svatýsub a ne pro 2nd. Jak jsme použili Option Explicit, dostaneme chybu kompilátoru pro nedefinování proměnných v 2ndsub.
Soukromý rozsah na úrovni modulu
Tyto proměnné jsou k dispozici všem postupům v definovaném modulu. Ve výchozím nastavení jsou proměnné deklarovány pomocí Žádný jsou vymezeny jako soukromé. Pro lepší čitelnost se ale doporučuje přidat soukromé.
Uvažujme stejný příklad, ale proměnnou deklarujeme mimo postup.
Option Explicit Private vartext As String ‘ Dim vartext As String can also be used Sub PrivateScope() vartext = 'Varible is visible to all procedures' MsgBox vartext, ,”Result from Sub1” End Sub Sub VarIsVisible() MsgBox vartext, ,”Result from Sub2” End Sub
Po provedení uvidíte, že obě procedury vrátí správné výsledky bez jakékoli chyby. Pro lepší pochopení jsme do schránky msgbox přidali správný název.
Rozsah veřejného modulu
Tyto typy proměnných jsou viditelné pro všechny postupy a ve všech modulech projektu. Vložte 2 moduly. (Klikněte pravým tlačítkem na list a vložte -> moduly).
Zadejte níže uvedený kód do jednoho modulu.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Do 2. modulu zadejte níže uvedený kód.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Výsledky jsou uvedeny níže
Uvažujme o praktickém příkladu a lépe pochopme celý rozsah.
V příloze je referenční soubor pro výše uvedený kód.
Statická proměnná
Obvykle je hodnota proměnné zachována pouze od volání procedury do konce procedury. Nezachová hodnotu, jakmile skončí provádění procedury.
Například , ve výše uvedeném kódu je hodnota firstNo a secondNo odstraněna, jakmile procedura skončí, příště, pokud spustíte kód, firstNo a secondNo získá stejnou hodnotu, jak je definována v kódu.
Ale statické proměnné jsou ty, které si udrží hodnotu proměnné i po provedení. Statická proměnná je povolena pouze uvnitř dílčí funkce nebo funkce.
Zvažte níže uvedený kód s nestatickou proměnnou.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Pokaždé, když stisknete F5, dostanete jako výsledek pouze 1.
Nyní deklarujme proměnnou jako statickou.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Pokaždé, když spustíte kód (F5) Výsledek bude mít zvýšenou hodnotu pro počet jako 1,2,3 atd., Protože statická proměnná si zachovala svoji hodnotu.
Poznámka: Statická proměnná udrží hodnotu, dokud nestlačíte tlačítko Reset na panelu nástrojů nebo zavřete sešit.
Konstantní proměnná
Jak název napovídá, hodnotu těchto proměnných nelze během provádění programu změnit. Jakmile je konstanta deklarována, nelze ji upravit ani jí přiřadit novou hodnotu.
Deklaraci konstanty lze provést v rámci procedury nebo na úrovni modulu (především procedury).
Option Explicit Sub constantVariable() Const SpeedLimitOfcar As String = '90kmph' Dim myCarSpeed As String myCarSpeed = '70kmph' If myCarSpeed > SpeedLimitOfcar Then MsgBox 'overspeed: Reduce the speed' Else MsgBox 'Within the limit: Always drive below : ' & SpeedLimitOfcar End If End Sub
Pokud se pokusíte změnit konstantní hodnotu, bude vyvolána chyba kompilace.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Časté dotazy
Otázka č. 1) Jak nastavit veřejnou proměnnou ve VBA?
Odpovědět: Veřejné proměnné jsou deklarovány před zahájením procedury. Při deklaraci proměnné je nutné použít veřejné klíčové slovo.
Veřejné značky celkem jako celé číslo
Otázka 2) Jaký typ proměnných nelze deklarovat mimo postup?
Odpovědět: Statické proměnné nelze deklarovat mimo proceduru ve VBA a zobrazí se chyba kompilace.
Otázka č. 3) Jak deklarovat proměnnou ve VBA?
Odpovědět: Dim klíčové slovo se používá k deklaraci proměnné. Dim znamená Dimension.
Dim variablename as Datatype
Otázka č. 4) Jak přiřadit proměnné hodnotě buňce ve VBA?
Odpovědět: Můžete použít funkci Range.
var1 = 10
Rozsah („C1: C14“). Hodnota = var1
Otázka č. 5) Co jsou proměnné ve VBA?
Odpovědět: Proměnné jsou jako zástupné symboly pro hodnoty v úložišti počítače. Proměnné mohou obsahovat různé varianty hodnot a tyto hodnoty se mohou během provádění kódu změnit. Každá proměnná by měla mít název, pomocí názvu proměnné počítač načte hodnotu přiřazenou této proměnné.
Otázka č. 6) Musíte deklarovat proměnnou ve VBA?
Odpovědět: Deklarace je ve VBA volitelná. Pokud proměnnou nedeklarujete a přímo ji použijete v postupu, nazývá se to implicitní deklarace. Abyste se vyhnuli chybám v kódu a pro lepší čitelnost, doporučujeme explicitně deklarovat proměnnou.
Otázka č. 7) Jak mohu deklarovat více proměnných ve VBA?
Odpovědět: V jednom prohlášení můžete deklarovat více proměnných. Musíte pouze zadat název proměnné oddělené čárkami v jedné klauzuli As.
webové stránky ke sledování anime zdarma v angličtině
Dim FirstNo, SecondNo As Integer
V jednom prohlášení můžete také zadat různé proměnné. Každá proměnná převezme datový typ uvedený v klauzuli As po části názvu proměnné.
Dim a, b As Single, c, d As Double, e As Integer, f As String
Otázka č. 8) Kdy by ve VBA nebyl žádný rozdíl mezi tlumeným a soukromým?
Odpovědět: Pokud deklarujete soukromý obor na úrovni modulu, pak není žádný rozdíl mezi deklarováním proměnné jako slabé nebo soukromé. Ve výchozím nastavení jsou proměnné deklarovány pomocí Žádný jsou vymezeny jako soukromé. Pro lepší čitelnost se ale doporučuje přidat soukromé.
Otázka č. 9) Co je to proměnná na úrovni modulu?
Odpovědět: Proměnné na úrovni modulu mohou být soukromé nebo veřejné. Soukromé proměnné jsou k dispozici pro všechny procedury v daném modulu a nejsou viditelné pro žádný jiný modul. Veřejné proměnné jsou viditelné pro všechny postupy ve všech modulech v projektu.
Závěr
Proměnná je zásadní v každém programovacím jazyce. V tomto tutoriálu jsme viděli, co jsou proměnné, jak je deklarovat a používat v programu. Rovněž jsme prozkoumali metodu Option Explicit, která nutí implementaci explicitní deklarace.
Byly diskutovány různé typy rozsahu proměnných, které uživatelům pomáhají určit, které části kódu lze proměnnou použít. Naučili jsme se používat statické proměnné, které pomáhají zachovat hodnotu proměnné, a konstantní proměnné, které pomáhají udržovat hodnotu proměnné beze změny.
=> Navštivte zde a dozvíte se VBA od nuly
Doporučené čtení
- Výukový program Excel VBA - Úvod do VBA v aplikaci Excel
- Pole Excel VBA a metody polí s příklady
- Datové typy VBA - číselné a nečíselné datové typy ve VBA
- Proměnné Pythonu
- Proměnné v C ++
- Proměnné Java a jejich typy s příklady
- Datové typy a proměnné C # s příklady
- Proměnné VBScript: Jak deklarovat a používat proměnné - VBScript Dim