Typ długiej zmiennej
VBA Długie typ danych służy do przechowywania bardzo długich wartości danych (od 2 147 483 648 do 2 147 483 648). Może przechowywać tylko liczby całkowite (bez miejsc dziesiętnych).
Aby zadeklarować zmienną Long, użyj instrukcji Dim (skrót od Dimension):
1 | Dim lngA jako Long |
Następnie, aby przypisać wartość do zmiennej, po prostu użyj znaku równości:
1 | lngA = 30000 |
Umieszczenie tego w procedurze wygląda tak:
12345678 | Podrzędny przykład()„Zadeklaruj długą zmienną”Dim lngA jako Long'wypełnij długą zmiennąlngA = 30000'pokaż okno wiadomościMsgBox LngANapis końcowy |
Jeśli uruchomisz powyższy kod, pojawi się następujący komunikat.
Typ danych LongLong
Typ danych LongLong jest dostępny tylko w 64-bitowej wersji pakietu Microsoft Office. Jeśli korzystasz z 32-bitowej wersji pakietu Office na komputerze 64-bitowym, ten typ danych nie będzie dostępny. Obsługuje numery z zakresu od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807.
1 | Dim lngA jak LongLong |
Typ danych LongPtr
LongPtr został wprowadzony do VBA w celu obsługi 64-bitowej wersji pakietu Microsoft Office. W systemie 32-bitowym jest traktowany jako Long, a w systemach 64-bitowych jako LongLong.
1 | Dim lngA jako LongPtr |
Uwaga: LongPtr nie jest dostępny w programie Excel 2007 lub starszym.
Wartości dziesiętne i długie typy danych
Długie zmienne nie mogą przechowywać wartości dziesiętnych. Jeśli podasz długą liczbę dziesiętną, liczba dziesiętna zostanie zaokrąglona w celu usunięcia dziesiętnej.
Dlatego, jeśli miałbyś uruchomić poniższą procedurę:
12345678 | Sub LngPrzykładB()'deklaruj długą zmienną'Dim lngA jako Long'wypełnij długą zmiennąlngA = 3524,12'pokaż okno wiadomościMsgBox LngANapis końcowy |
Wartość dziesiętna zostanie zaokrąglona w dół, zwracając następujący komunikat:
Jednak ten kod poniżej:
12345678 | Sub LngPrzykładB()'deklaruj długą zmienną'Dim lngA jako Long'wypełnij długą zmiennąlngA = 3524,12'pokaż okno wiadomościMsgBox LngANapis końcowy |
Zwróci następujący komunikat (zaokrąglając w górę):
Typ danych dziesiętny/podwójny
Jeśli chcesz przechowywać miejsce dziesiętne, musisz zadeklarować zmienną, która dopuszcza miejsca dziesiętne. Dostępne są 3 typy danych, których możesz użyć - Single, Double lub Currency.
1 | Dim sngPrice jako Single |
1 | Dim dblCena jako podwójna |
1 | Dim curPrice jako waluta |
Typ danych Pojedynczy zaokrągli kropkę dziesiętną nieco inaczej niż typ danych Podwójny i Walutowy, dlatego w celu zapewnienia dokładności preferowane jest użycie Podwójny do pojedynczego. Double może mieć do 12 miejsc po przecinku, podczas gdy Currency i Single mogą mieć do 4 miejsc po przecinku.
Zadeklaruj długą zmienną na poziomie modułu lub globalnym
W poprzednich przykładach zadeklarowaliśmy zmienną Long w ramach procedury. Zmienne zadeklarowane za pomocą procedury mogą być używane tylko w ramach tej procedury.
Zamiast tego możesz zadeklarować zmienne Long 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żyj Publiczny oświadczenie, aby wskazać, że długa zmienna jest dostępna do użycia w całym projekcie VBA.
1 | Publiczna lngA jako Long |
Jeśli miałbyś zadeklarować zmienną long na poziomie modułu, a następnie spróbować użyć jej w innym module, wystąpiłby błąd.
Jednakże, gdybyś użył słowa kluczowego Public do zadeklarowania zmiennej long, błąd nie wystąpiłby i procedura działałaby idealnie.
Format długo przechowywany jako ciąg
Może zaistnieć sytuacja, w której chcesz sformatować długi typ danych jako ciąg - na przykład datę lub możesz chcieć wyświetlić symbol waluty.
Aby to osiągnąć, użyj funkcji Format.
Poniższa procedura:
1234567891011 | PodtestLongToString()'deklaruj zmienną łańcuchowąDim strDate jako ciąg'zadeklaruj długą i wypełnij wartośćDim lngDate tak długoDługośćDnia = 44055'przekonwertuj długie na ciąg sformatowany jako datastrDate = Format(lngDate, "dd mmmm rrrr")'zobacz wynik'Debug.Print strDateNapis końcowy |
zwróci wynik poniżej:
i następującą procedurę
1234567891011 | PodtestLongtoCurrencyString()'deklaruj zmienną łańcuchowąDim strMoney As String'zadeklaruj długą i wypełnij wartośćDim LngValue tak długoWartość dł. = 44055'przekonwertuj długość długą na ciąg z symbolem walutystrMoney = Format(lngValue, "$#,##0")'zobacz wynik'MsgBox strMoneyNapis końcowy |
zwróci ten wynik: