vba variables option explicit vba
W tym samouczku wyjaśniono, jak deklarować i używać zmiennych VBA. Dowiedz się również o opcji jawnej, zakresie zmiennej, zmiennych statycznych i stałych:
W komputerze wszystkie wartości danych są przechowywane w pamięci lub w pamięci komputera. Aby uzyskać dostęp do tych wartości, należy określić nazwę związaną z tą wartością, która w językach programowania jest nazywana zmienną.
W tym samouczku nauczymy się, jak deklarować i definiować zmienną wraz z różnymi typami zakresów zmiennych, a także szczegółowo badać zmienne statyczne i stałe.
=> Sprawdź tutaj, aby zobaczyć samouczki szkoleniowe od A do Z VBA
Czego się nauczysz:
Zmienne VBA
Zmienne są jak symbole zastępcze dla wartości w pamięci komputera. Zmienne mogą zawierać różne odmiany wartości i te wartości mogą się zmieniać podczas wykonywania kodu.
Każda zmienna będzie miała nazwę używaną do uzyskania dostępu do wartości. VBA ma pewne ograniczenia dotyczące wyboru nazwy.
Poniżej wymieniono listę ograniczeń:
- Nazwa zmiennej nie może mieć więcej niż 255 znaków.
- Nazwa zmiennej nie może zaczynać się od liczby.
- Nie możesz zaczynać od znaków specjalnych, takich jak!, @, &,., # Ani nie może zawierać spacji.
- Słowa kluczowe nie są traktowane jako nazwa zmiennej.
Kompilator zgłosi błąd, jeśli naruszysz te ograniczenia
Przykład:
Prawidłowe nazwy zmiennych: nazwa_zmiennej, wynik12, numer_pierwszy
Nieprawidłowe nazwy zmiennych: 123abc, #number, Sub, abc.123
Pierwsza liczba (spacja nie jest dozwolona między słowami)
Deklarowanie zmiennej VBA
Musimy użyć Żaden słowo kluczowe, aby zadeklarować zmienną. Podczas deklarowania zmiennej dostępne są 2 sekcje. 1śwto nazwa zmiennej i 2ndjest typem wartości, która ma być przechowywana w zmiennej o nazwie Typ danych.
Składnia: Dim VariableName As DataType
Przykład:
- Dim MyAge As Integer
- Dim My_Percentage As Double
- Przyciemnij Full_Name jako ciąg
W tym miejscu wyraźnie mówisz kompilatorowi, że moja zmienna powinna przechowywać tylko te typy danych, a VBA upewni się, że zgłosi błąd niezgodności typu kompilatora, gdy wartość zdefiniowana dla zmiennej nie pasuje do typu danych.
Przykład:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Ale jeśli nie masz pewności co do typu danych zmiennej, VBA pozwala pominąć typ danych. Poniższa składnia jest również poprawna.
Dim VariableName
Jeśli nie zadeklarujesz typu danych zmiennej, VBA traktuje go jako typ danych Variant i jest zobowiązany do akceptowania dowolnego typu danych całkowitych, takich jak liczba całkowita, ciąg znaków, skoroszyt itp. W tym samym programie zmienne wariantowe mogą przyjmować wartości łańcuchowe, liczby całkowite i każdy inny 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
Ponieważ Total_Marks jest zmienną wariantową, w przeciwieństwie do poprzedniego kodu, kompilator nie zgłosi żadnego błędu, jak pokazano poniżej.
Uwaga: Pamiętaj, że VBA pozwala na użycie zmiennej bez faktycznego jej deklarowania.
Poniższy przykładowy kod również daje poprawny wynik. W takim przypadku VBA automatycznie traktuje zmienną jako typ danych Variant. Nazywa się to deklaracją niejawną.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Zalety deklarowania zmiennej
- Łatwe do debugowania: Dobrą praktyką jest zadeklarowanie zmiennej przed jej użyciem. Daje nam to wcześniejsze zrozumienie błędów, takich jak niedopasowanie typów i błędy literówki, zmniejszając w ten sposób ryzyko odejścia od logiki programu.
- Lepsza czytelność: Jako zespół, wiele osób będzie przyglądać się kodowi, a zadeklarowanie zmiennej pomoże każdemu z typem wartości, jakie ma przyjąć zmienna, a także pomoże użytkownikom wprowadzić odpowiednie wartości wejściowe podczas wykonywania programu.
- Przestrzeń magazynowa: Jeśli nie zadeklarujesz zmiennej, VBA traktuje ją jako typ danych Variant, który zajmuje najwięcej miejsca w pamięci (16 bajtów do 22 bajtów) w porównaniu z innymi typami danych. Na przykład, jeśli używasz zmiennej typu Byte, która zajmuje tylko 1 bajt i jeśli nie zadeklarujesz, VBA w końcu zarezerwuje miejsce na 16 bajtów, marnując w ten sposób pamięć.
Opcja jawna
Aby upewnić się, że wszystkie zmienne są jawnie zadeklarowane, przed ich użyciem musimy użyć instrukcji Option Explicit. Powinien być używany na początku każdej procedury w tym module.
Zobaczmy przykład, w którym nie jest używana instrukcja Option Explicit.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Wykonaj kod (naciśnij F5 lub przycisk Uruchom na pasku narzędzi), a otrzymasz puste pole wiadomości.
Mimo że zadeklarowałeś zmienną, znalazłeś się w pustym polu wynikowym z powodu literówki w Msgbox Firt_Name. Opcja Explicit pomoże nam w wyeliminowaniu takich błędów.
Powtórzmy ten sam kod, używając Option Explicit. Wprowadź Option Explicit przed rozpoczęciem procedury.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Teraz, jeśli wykonasz kod (naciśnij klawisz F5 lub przycisk Uruchom na pasku narzędzi), a otrzymasz błąd kompilatora.
Możesz dodać VBA Opcja jawna automatycznie.
W edytorze VB Przejdź do Narzędzia -> Opcje -> Wybierz „Wymagaj deklaracji zmiennej”.
Teraz Opcja jawna zostanie dodany automatycznie za każdym razem, gdy wstawisz nowy moduł lub zarejestrujesz nowe makro.
Uwaga: Opcja Explicit nie zostanie dodana do istniejącego kodu VBA. W razie potrzeby musisz dodać go ręcznie.
Przypisywanie wartości zmiennej
Wartości można przypisać do zmiennych za pomocą równości symbolu (=). Jeśli odnosisz się do komórki w Excelu, musisz użyć funkcji Range.
Zobacz poniższy kod.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
W powyższym przykładzie var1 jest zmienną, która przechowuje wartość 10 bezpośrednio za pomocą (=), a funkcja Range pomoże wprowadzić wartość var1, która wynosi 10 w komórkach programu Excel C1 do C14.
Zakres zmiennej
Każda zmienna w programie będzie miała określony zakres. Zasięg ten informuje program o obszarach, w których zmienna jest widoczna, tj. O module lub funkcji, która może lub nie może używać zmiennej.
VBA ma 3 typy zakresu zdefiniowane dla zmiennej.
- Zakres na poziomie procedury
- Prywatny zakres na poziomie modułu
- Zakres na poziomie modułu publicznego
Zakres na poziomie procedury
Zmienne zdefiniowane w procedurze, tj. W podrzędnej lub funkcji, będą mogły ich używać tylko. Nie są one widoczne dla żadnej innej procedury.
Przykład:
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
Kiedy wykonasz powyższy kod, dla pierwszego Sub msgbox zwróci prawidłowy wynik, ale dla drugiego Sub zostanie wyrzucony błąd kompilatora. Ponieważ zmienna wierzchołka jest widoczna tylko dla 1śwsub, a nie dla 2nd. Ponieważ użyliśmy Option Explicit, otrzymamy błąd kompilatora za brak definiowania zmiennych w 2ndpod.


Prywatny zakres na poziomie modułu
Te zmienne są dostępne dla wszystkich procedur w zdefiniowanym module. Domyślnie zmienne zadeklarowane z rozszerzeniem Żaden mają zakres prywatny. Jednak dla lepszej czytelności zaleca się dodanie prywatnego.
Rozważmy ten sam przykład, ale zadeklarujemy zmienną poza procedurą.
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 wykonaniu zobaczysz, że obie procedury zwrócą poprawne wyniki bez żadnego błędu. Dla lepszego zrozumienia dodaliśmy właściwy tytuł w msgbox.
Zakres na poziomie modułu publicznego
Te typy zmiennych są widoczne dla wszystkich procedur i we wszystkich modułach projektu. Włóż 2 moduły. (Kliknij prawym przyciskiem myszy arkusz i Wstaw -> moduły).
Wpisz poniższy kod w jednym module.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Wpisz poniższy kod w drugim module.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Wyniki przedstawiono poniżej
Rozważmy praktyczny przykład i lepiej zrozummy cały zakres.
W załączeniu znajduje się plik referencyjny dla powyższego kodu.
Zmienna statyczna
Zwykle wartość zmiennej jest zachowywana tylko od wywołania procedury do jej końca. Nie zachowuje wartości po zakończeniu wykonywania procedury.
Na przykład , w powyższym kodzie wartość firstNo i secondNo jest usuwana zaraz po zakończeniu procedury, następnym razem, jeśli wykonasz kod, firstNo i secondNo otrzymają taką samą wartość, jak zdefiniowano w kodzie.
Ale zmienne statyczne to takie, które zachowają wartość zmiennej nawet po wykonaniu. Zmienna statyczna jest dozwolona tylko wewnątrz sub lub funkcji.
Rozważ poniższy kod ze zmienną niestatyczną.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Za każdym razem, gdy trafisz F5, otrzymasz tylko 1 w wyniku.
Teraz zadeklarujmy zmienną jako statyczną.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Za każdym razem, gdy wykonujesz kod (F5) Wynik będzie miał zwiększoną wartość licznika, np. 1, 2, 3 itd., Ponieważ zmienna statyczna zachowała swoją wartość.
Uwaga: Zmienna statyczna zachowa wartość do momentu naciśnięcia przycisku Reset na pasku narzędzi lub zamknięcia skoroszytu.
Stała zmienna
Jak sama nazwa wskazuje, wartości tych zmiennych nie można zmieniać w trakcie wykonywania programu. Po zadeklarowaniu stałej nie można jej modyfikować ani przypisywać nowej wartości.
Deklaracja stałej może odbywać się w ramach procedury lub na poziomie modułu (przede wszystkim 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
Jeśli spróbujesz zmienić stałą wartość, zostanie zgłoszony błąd kompilacji.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
FAQs
Pytanie 1) Jak ustawić zmienną publiczną w VBA?
Odpowiedź: Zmienne publiczne są deklarowane przed rozpoczęciem procedury. Podczas deklarowania zmiennej należy użyć słowa kluczowego public.
Publiczne Total_Marks As Integer
P # 2) Jakiego typu zmiennych nie można zadeklarować poza procedurą?
Odpowiedź: Zmiennych statycznych nie można zadeklarować poza procedurą w języku VBA i wystąpi błąd kompilacji.
P # 3) Jak zadeklarować zmienną w VBA?
Odpowiedź: Słowo kluczowe Dim służy do deklarowania zmiennej. Dim oznacza wymiar.
Dim nazwa zmiennej As typ danych
Q # 4) Jak przypisać wartość zmiennej do komórki w VBA?
Odpowiedź: Możesz użyć funkcji Range.
var1 = 10
Zakres („C1: C14”). Wartość = zmienna1
Pytanie 5) Co to są zmienne w VBA?
Odpowiedź: Zmienne są jak symbole zastępcze dla wartości w pamięci komputera. Zmienne mogą zawierać różne odmiany wartości i te wartości mogą się zmieniać podczas wykonywania kodu. Każda zmienna powinna mieć nazwę, używając nazwy zmiennej komputer pobierze wartość przypisaną do tej zmiennej.
P # 6) Czy musisz zadeklarować zmienną w VBA?
Odpowiedź: Deklaracja jest opcjonalna w VBA. Jeśli nie zadeklarujesz zmiennej i nie użyjesz jej bezpośrednio w procedurze, nazywa się to deklaracją niejawną. Aby uniknąć błędów w kodzie i zapewnić lepszą czytelność, zaleca się jawne zadeklarowanie zmiennej.
P # 7) Jak zadeklarować wiele zmiennych w VBA?
Odpowiedź: W jednej instrukcji deklaracji można zadeklarować wiele zmiennych. Wystarczy podać nazwę zmiennej oddzieloną przecinkami w jednej klauzuli As.
jaka aplikacja umożliwia pobieranie filmów z YouTube
Dim FirstNo, SecondNo As Integer
Możesz także określić różne zmienne w jednej instrukcji deklaracji. Każda zmienna przyjmie typ danych określony w klauzuli As po części nazwy zmiennej.
Dim a, b As Single, c, d As Double, e As Integer, f As String
P # 8) Kiedy w VBA nie byłoby różnicy między przyciemnieniem a prywatnym?
Odpowiedź: Jeśli deklarujesz prywatny zakres na poziomie modułu, nie ma różnicy między deklarowaniem zmiennej jako dim lub private. Domyślnie zmienne zadeklarowane z rozszerzeniem Żaden mają zakres prywatny. Jednak dla lepszej czytelności zaleca się dodanie prywatnego.
P # 9) Co to jest zmienna na poziomie modułu?
Odpowiedź: Zmienne na poziomie modułu mogą być prywatne lub publiczne. Zmienne prywatne są dostępne dla wszystkich procedur w tym module i nie są widoczne dla żadnego innego modułu. Zmienne publiczne są widoczne dla wszystkich procedur we wszystkich modułach projektu.
Wniosek
Zmienna ma kluczowe znaczenie w każdym języku programowania. W tym samouczku widzieliśmy, czym są zmienne, jak je zadeklarować i jak ich używać w programie. Zbadaliśmy również metodę Option Explicit, która wymusza implementację jawnej deklaracji.
Omówiono różne typy zakresu zmiennej, które pomagają użytkownikom określić, które części kodu mogą zostać użyte. Dowiedzieliśmy się, jak używać zmiennych statycznych, które pomagają zachować wartość zmiennej, oraz zmiennych stałych, które pomagają utrzymać niezmienioną wartość zmiennej.
=> Odwiedź tutaj, aby nauczyć się VBA od podstaw
rekomendowane lektury
- Samouczek Excel VBA - Wprowadzenie do VBA w programie Excel
- Excel VBA Array and Array Methods with Przykłady
- Typy danych VBA - Numeryczne i nieliczbowe typy danych w VBA
- Zmienne Pythona
- Zmienne w C ++
- Zmienne Java i ich typy z przykładami
- C # typy danych i zmienne z przykładami
- Zmienne VBScript: jak deklarować i używać zmiennych - VBScript Dim