Typ danych VBA Long (zmienna Dim)

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:

wave wave wave wave wave