VBA Long (przykład) - Przewodnik krok po kroku po długim typie danych w Excel VBA

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.

Typ danych VBA Long wymaga 4 bajtów pamięci komputera. Jest to pamięć zmiennej typu double integer (2 bajty) i połowa pamięci zmiennej 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.

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 „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 arkusza roboczego 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 ostatnio użyty numer wiersza to 25000. W tym celu nie potrzebujemy danych typu „LONG”, ponieważ typ danych „INTEGER” może podać 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, uzyskam 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, spowoduje to błąd przepełnienia.

Na przykład, będę zwiększać dane do 32.768 th wierszy.

Teraz, jeśli ponownie uruchomię ten sam kod, nie uzyskam wartości. 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

Musisz już myśleć o tym, 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” lub „Wariant” języka VBA.

Pamiętaj, że w momencie przecięcia numeru 2147483647 otrzymamy błąd przepełnienia w VBA o typie 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.

Interesujące artykuły...