VBA Long

Co to jest długi typ danych w VBA?

Long to typ danych w VBA, który służy do przechowywania wartości liczbowych, wiemy, że integer również przechowuje wartości liczbowe, ale Long różni się od liczb całkowitych, ponieważ zakres przechowywania danych jest bardzo duży w przypadku typu long, również w long typ danych możemy również przechowywać wartości dziesiętne, jest to wbudowany typ danych.

„Długie”, jak sama nazwa wskazuje, powinno mieć wartość czegoś dużego. „Długi” to numeryczny typ danych w VBA Excel.

Długi typ danych w Excel VBA może zawierać wartości od 0 do 2, 147, 483, 647 dla liczb dodatnich, a dla liczby ujemnej może zawierać od 0 do -2, 147, 483, 648.

VBA Typ danych Long wymaga 4 bajtów pamięci komputera, jest to pamięć zmiennych typu double integer (2 bajty) i połowa pamięci zmiennych typu double data (8 bajtów)

Nigdy nie widziałem scenariusza, w którym chciałbym w pełni wykorzystać limit typu danych VBA Long w mojej krótkiej karierze. Ale pokażę ci kilka przykładów, aby lepiej to zrozumieć.

Przykłady długich typów danych VBA

Poniżej znajdują się przykłady typu danych Excel VBA Long.

Możesz pobrać ten szablon Excel typu VBA z długimi danymi - szablon programu Excel typu VBA z długimi danymi

Długi przykład VBA nr 1

Gdy tylko zadeklarujesz zmienny typ danych jako „Long”, możesz przypisać wartości od -2, 147, 483, 648 do 2, 147, 483, 648.

Na przykład zadeklaruj zmienną jako długi typ danych.

Kod:

 Sub Long_Example1 () Dim k As Long End Sub 

Przypiszmy wartość jako całkowitą liczbę wierszy arkusza.

Aby uzyskać całkowitą liczbę wierszy w kodzie arkusza programu Excel, to „Wiersze. Liczyć"

Kod:

 Sub Long_Example1 () Dim k As Long k = Rows.Count End Sub 

Teraz pokaż wartość w oknie komunikatu.

Kod:

 Sub Long_Example1 () Dim k As Long k = Rows.Count MsgBox k End Sub 

Uruchom ten kod i zobacz, jaka jest łączna liczba wierszy w arkuszu.

Mówi, że mamy ponad 1 milion wierszy w arkuszu.

Teraz dla lepszego zrozumienia zmienię typ danych z LONG na INTEGER.

Kod:

 Sub Long_Example1 () Dim k As Integer k = Rows.Count MsgBox k End Sub 

Jeśli uruchomię kod VBA, otrzymam komunikat o błędzie jako „Przepełnienie”.

Powód, dla którego otrzymaliśmy ten błąd w VBA, ponieważ typ danych „Integer” może zawierać tylko wartości od -31768 do 32767. W tym przypadku „Rzędy. Count ”zwróci liczbę, która jest większa niż limit zmiennej„ integer ”.

Przypisanie wartości powyżej 1 miliona do zmiennej, która może pomieścić tylko 32767 powoduje tutaj błąd przepełnienia.

Długi przykład VBA nr 2

Znajdź ostatni wiersz za pomocą długiej zmiennej

Znalezienie ostatnio używanego wiersza w arkuszu jest najważniejszym elementem kodowania. Aby znaleźć ostatnio używany wiersz arkusza, należy zadeklarować zmienną. Deklarowanie zmiennej i przypisywanie typu danych wymaga zdrowego rozsądku.

Załóżmy, że dane kończą się na 25000 wierszach, jak pokazano na poniższym obrazku.

Teraz wiem, że ostatni używany numer wiersza to 25000, w tym przypadku nie potrzebujemy typu danych „LONG”, ponieważ typ danych „INTEGER” może dać mi ostatni wiersz.

Spójrz na poniższy kod, aby uzyskać informacje.

Kod:

 Sub Long_Example1 () Dim k As Integer k = Cells (Rows.Count, 1) .End (xlUp) .Row MsgBox k End Sub 

Jeśli uruchomię ten kod, otrzymam numer ostatnio używanego wiersza arkusza roboczego, nad którym obecnie pracuję.

Jako programista ważne jest, aby znać rozmiar danych, które będziesz mieć w przyszłości. Ponieważ w tej chwili dane mogą kończyć się na 25000-tym wierszu, ale jeśli dane wzrosną poza limit „liczby całkowitej”, tj. 32767, powoduje to błąd przepełnienia.

Na przykład zwiększę dane do 32768 wierszy.

Teraz, jeśli ponownie uruchomię ten sam kod, nie uzyskam wartości, a raczej otrzymam błąd jak poniżej.

Pamiętaj, że zwiększyłem limit tylko o 1 poza limit wartości „Integer”, więc wystąpił błąd przepełnienia.

Dlatego ważne jest, aby znać rozmiar danych przed przypisaniem typu danych do zmiennej. Zawsze lepiej jest zadeklarować zmienną jako „LONG”, nie myśląc o rozmiarze danych w przyszłości.

Alternatywy dla długich zmiennych Excel VBA

Pewnie już się zastanawiasz, co zrobić, jeśli chcemy utrzymać wartość większą niż limit długiej zmiennej. W tym celu musimy użyć różnych typów danych, np. „Ciąg” VBA lub „Wariant”

Pamiętaj, że w momencie przecięcia numeru 2147483647 pojawi się błąd przepełnienia w VBA z typem danych LONG. Aby zapisać więcej niż ta liczba, musimy użyć typu danych „Ciąg” lub „Wariant”.

Dla String

Kod:

 Sub Long_Example2 () Dim k As String k = 2147483648 MsgBox k End Sub 

Dla wariantu

Kod:

 Sub Long_Example2 () Dim k As Variant k = 2147483648 MsgBox k End Sub 

Kiedy uruchomimy powyższe kody, pokaże on wspomniany numer.