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ć.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba.jpg.webp)
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
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_2.jpg.webp)
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
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_3.jpg.webp)
Teraz pokaż wartość w oknie komunikatu.
Kod:
Sub Long_Example1 () Dim k As Long k = Rows.Count MsgBox k End Sub
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_4.jpg.webp)
Uruchom ten kod i zobacz, jaka jest łączna liczba wierszy w arkuszu.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba.gif)
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
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_5.jpg.webp)
Jeśli uruchomię kod VBA, otrzymam komunikat o błędzie „Przepełnienie”.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_6.jpg.webp)
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.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_7.jpg.webp)
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
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_8.jpg.webp)
Jeśli uruchomię ten kod, uzyskam numer ostatnio używanego wiersza arkusza roboczego, nad którym obecnie pracuję.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_9.jpg.webp)
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.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_10.jpg.webp)
Teraz, jeśli ponownie uruchomię ten sam kod, nie uzyskam wartości. Raczej otrzymam błąd jak poniżej.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_11.jpg.webp)
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
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_12.jpg.webp)
Dla wariantu
Kod:
Sub Long_Example2 () Dim k As Variant k = 2147483648 MsgBox k End Sub
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_13.jpg.webp)
Kiedy uruchomimy powyższe kody, pokaże on wspomniany numer.
![](https://cdn.know-base.net/1353727/vba_long_example_step_by_step_guide_to_long_data_type_in_excel_vba_14.jpg.webp)