Typ danych wariantu VBA (zmienna Dim)

Wariant Typ zmiennej

Zmienna Variant może przechowywać dowolny czas danych (łańcuch, liczby całkowite, ułamki dziesiętne, obiekty itp.). Jeśli nie zadeklarujesz typu zmiennej, Twoja zmienna zostanie uznana za wariant.

Aby zadeklarować zmienną Variant, użyj instrukcji Dim (skrót od Dimension):

1 Dim nazwazmiennej jako wariant
1 Dim rng jako wariant

Następnie, aby przypisać wartość do zmiennej, po prostu użyj znaku równości:

1 nazwa_zmiennej = "Jan"
1 rng = Arkusze(1).Range("A1")

Umieszczenie tego w procedurze wygląda tak:

12345678910 Sub strPrzykład()„zadeklarować warianty”Dim strName jako wariantDim rng As Variant'wypełnij zmiennestrName = "Fredyt Kowalski"Ustaw rng = Arkusze(1).Range("A1")'wypełnij arkuszrng.Wartość = nazwastrNapis końcowy

Jeśli uruchomisz powyższy kod, komórka A1 w arkuszu 1 zostanie wypełniona tekstem „Fred Smith”

Na podstawie nazw zadeklarowanych powyżej możemy wywnioskować, że nazwa_zmiennej zawiera tekst, a objArkusz zawierałby obiekt arkusza. Ale w rzeczywistości do zmiennej można skierować dowolny typ danych.

Możesz wypełnić zadeklarowane powyżej zmienne w następujący sposób i nie wystąpią żadne błędy.

1 nazwa_zmiennej = 6
1 objArkusz - "Fred"

Używanie zmiennych wariantów jest niezwykłe i nie jest uważane za dobrą praktykę. Czasami jednak przydatne są zmienne Variant.

Zadeklaruj zmienną wariantową na poziomie modułu lub globalnym

W poprzednim przykładzie zadeklarowałeś zmienną Variant w ramach procedury. Zmienne zadeklarowane za pomocą procedury mogą być używane tylko w ramach tej procedury.

Zamiast tego można zadeklarować zmienne Variant na poziomie modułu lub globalnym.

Poziom modułu

Poziom modułu zmienne są deklarowane na górze modułów kodu z Ciemny oświadczenie.

Zmiennych tych można używać z dowolną procedurą w tym module kodu.

Poziom globalny

Poziom globalny zmienne są również deklarowane na górze modułów kodu. Jednak zamiast używać Ciemny oświadczenie, używasz Publiczny oświadczenie, aby wskazać, że zmienna ciągu jest dostępna do użycia w całym projekcie VBA.

1 Public strName jako Variant

Jeśli zadeklarowałeś zmienną wariantową na poziomie modułu i użyto jej w innym module, wystąpiłby błąd.

Gdyby użyto słowa kluczowego Public do zadeklarowania zmiennej wariantu, błąd nie wystąpiłby i procedura działałaby idealnie.

Używanie wariantu do wypełniania programu Excel

Rozważ następującą procedurę:

12345678910111213141516171819 Podrzędna zmienna testowa'deklaruj ciąg do przechowywania nazwy produktu'Dim strProduct jako ciąg'zadeklarować liczbę całkowitą do przechowywania ilości produktu'Dim iQty jako liczba całkowita„deklaruj, że podwaja się cena produktu i cena całkowita”Dim dblCena jako podwójnaDim dblTotal jako Double'wypełnij zmiennestrProduct = "Mąka Uniwersalna"iIlość = 3cena dbl = "5,00 USD"suma dbl = "15,00 USD"'wypełnij arkusz ExcelaZakres("A1") = strProduktZakres ("A2") = iQtyZakres("A3") = dblCenaZakres("A4") = dblTotalNapis końcowy

Kiedy uruchamiamy ten kod, pojawia się następujący błąd.

Kliknij Debuguj

Nie możesz umieścić w zmiennej znaku dolara, ponieważ zmienna jest zadeklarowana jako a Podwójnie, a zatem nie może przechowywać wartości ciągów.

Ogłosić cena dbl oraz suma dbl jako warianty, co oznacza, że ​​nie jesteś ograniczony do typu danych.

1 Dim dblPrice jako wariant
1 Dim dblTotal jako wariant

Ponownie uruchom kod, a dane pojawią się w arkuszu Excela tak, jak powinny.

Zwróć uwagę, że dane wprowadzone w formatach A4 i A5 są następnie automatycznie konwertowane przez program Excel na liczby.

Deklarowanie tablicy dynamicznej

Zmienne wariantów są również przydatne podczas deklarowania tablicy dynamicznej, ponieważ umożliwiają zmianę rozmiaru tablicy w czasie wykonywania.

ZTablica wariantów, nie musisz definiować rozmiaru tablicy. Rozmiar dostosuje się automatycznie.

123456789 Podrzędna tablica wariantów()Dim arrList() jako wariant„Zdefiniuj wartości”arrList= Tablica (1, 2, 3, 4)'Zmienić wartościarrList= Tablica (1,2,3,4,5,6)„Pozycja wyjściowa 4”MsgBox arrVar(4)Napis końcowy

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave