Funkcja Excel VBA UBound
Jak często pojawia się sytuacja, w której należy wspomnieć o maksymalnej długości lub górnej granicy danych tablicy pracujących w programie Excel? Przez większość czasu, prawda? A jak to znaleźć? Może ręcznie przez większość czasu. Można go jednak zautomatyzować i uzyskać maksymalną długość lub górną granicę tablicy za pomocą funkcji VBA o nazwie UBound.
Co więcej, ma najpiękniejszy sposób na zapętlenie. Na przykład, jeśli używasz pętli For w tablicy, zdecydowanie chcesz zapętlić wszystkie elementy tablicy. W takim przypadku nużące byłoby ręczne znalezienie górnej granicy i wspomnienie o niej w pętli. Zmniejszy to również ogólność kodu. Dlatego funkcja VBA UBound przydaje się w takich sytuacjach.
UBound oznacza górną granicę i daje górną granicę lub maksymalną długość tablicy w Excel VBA.
Wzór na funkcję UBound w Excelu VBA
Funkcja Excel VBA UBound ma następującą składnię.
UBound (Arrayname (, Dimension))
Gdzie,
- Arrayname: nazwa zdefiniowanej tablicy. Ten argument jest argumentem obowiązkowym / wymaganym.
- Wymiar: Opcjonalny argument określający wymiar tablicy. Niezależnie od tego, czy jest to jednowymiarowa, dwuwymiarowa czy wielowymiarowa tablica. Domyślnie przyjmie tablicę jednowymiarową, jeśli nie zostanie określona.
Ponieważ ta funkcja ma tylko dwa argumenty, znacznie łatwiej jest zapamiętać składnię tej funkcji.
Jak korzystać z funkcji Excel VBA UBound?
Nauczymy się korzystać z funkcji VBA UBound z kilkoma przykładami w Excelu.
Możesz pobrać ten szablon Excel VBA UBound tutaj - szablon Excel VBA UBoundPrzykład # 1 - VBA UBound z macierzą jednowymiarową
Wykonaj poniższe kroki, aby użyć funkcji UBound w VBA.
Krok 1: Na karcie Deweloper kliknij Visual Basic, aby otworzyć edytor VB.
Krok 2: Kliknij Wstaw i wybierz kartę Moduł, aby dodać nowy pusty moduł do VBE.
Krok 3: W VBE zacznij pisać makro i zdefiniuj nazwę zmiennej.
Kod:
Sub Onedm_Ubound () Dim IndiaCity (4) As String End Sub
Tutaj zmienna IndiaCity jest zdefiniowana z 5 elementami. Typ zmiennej jest łańcuchem.
Uwaga: Tablica zaczyna się od 0 (zero). Zatem tablica ta będzie się składać z 5 elementów.Krok 4: Przypisz wartości do elementów tablicy.
Kod:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = „Mumbai” IndiaCity (1) = „Bengaluru” IndiaCity (2) = „Hyderabad” IndiaCity (3) = „Delhi” IndiaCity (4) = „Pune " Napis końcowy
Tutaj element zerowy ma wartość przypisaną jako „Mumbai”, pierwszy element ma wartość przypisaną jako „Bengaluru” i tak dalej.
Krok 5: Użyj funkcji UBound wraz z MsgBox, aby uzyskać górną granicę dla tablicy.
Kod:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = „Mumbai” IndiaCity (1) = „Bengaluru” IndiaCity (2) = „Hyderabad” IndiaCity (3) = „Delhi” IndiaCity (4) = „Pune „MsgBox” Upper Bound for the Array to: „& UBound (IndiaCity) End Sub
Krok 6: Uruchom ten kod, naciskając klawisz F5 bezpośrednio lub ręcznie, naciskając przycisk Uruchom na lewym górnym panelu. Pojawi się okno komunikatu z komunikatem „ Upper Bound for the Array to: 4 ”.
Należy pamiętać, że funkcja UBound nie wykrywa górnej granicy z elementów Array. Po prostu sprawdza maksymalną liczbę elementów w tablicy.
Przykład 2 - VBA UBound z macierzą dwuwymiarową
Wykonaj poniższe kroki, aby użyć funkcji UBound w VBA.
Krok 1: Zdefiniuj zmienną, która może przechowywać dane dwuwymiarowe.
Kod:
Sub TwoDm_UBound () Dim Array_Test (0 to 6, 1 to 8) As String End Sub
Krok 2: Zdefiniuj nową zmienną Wiadomość i użyj jej w MsgBox. Ta zmienna pomoże nam drukować jednocześnie górne granice obu wymiarów.
Kod:
Sub TwoDm_UBound () Dim Array_Test (0 to 6, 1 to 8) As String Dim Message MsgBox Wiadomość End Sub
Krok 3: Teraz wypróbuj następujące instrukcje, które pozwalają systemowi wydrukować oba wymiary tablicy w tym samym oknie komunikatu.
Kod:
Sub TwoDm_UBound () Dim Array_Test (0 do 6, 1 do 8) As String Dim Message Wiadomość = „Górna granica pierwszego wymiaru to:” i UBound (Array_Test, 1) & vbCrLf Wiadomość = Wiadomość i ”Górna granica drugiego wymiaru to : "I UBound (Array_Test, 2) i vbCrLf MsgBox Wiadomość End Sub
Dwie instrukcje wymienione w powyższym kodzie pozwalają systemowi wydrukować oba wymiary w tym samym oknie komunikatu. Pierwsza instrukcja przechowuje wartość górnej granicy pierwszego wymiaru w zmiennej Message i kończy linię (vbCrLf). Druga instrukcja dodaje pierwszą wartość przypisaną do zmiennej Message i łączy ją z górną granicą drugich wymiarów z komunikatem wyskakującym.
Ponieważ vbCrLf jest używany w obu instrukcjach, działa tutaj jako powrót do nowej linii / karetki w obu instrukcjach.
Krok 4: Uruchom kod, naciskając klawisz F5 lub Run i zobacz wynik.
Na podobnych liniach możemy przejść do wielu wymiarów i zobaczyć górną granicę dla każdego z nich.
Przykład # 3 - Funkcja UBound do automatycznej aktualizacji danych w arkuszu
Załóżmy, że masz zestaw danych, jak pokazano na zrzucie ekranu.
Dane te są aktualizowane i musisz od czasu do czasu kopiować zaktualizowane dane. Teraz bardzo żmudnym zadaniem jest zawsze sprawdzanie aktualizacji danych, a następnie kopiowanie ich do nowego arkusza. To również zajmuje dużo czasu. Czy możemy spróbować zautomatyzować go za pomocą funkcji UBound w VBA? Zobaczmy.
Wykonaj poniższe kroki, aby automatycznie zaktualizować dane w arkuszu za pomocą funkcji VBA UBound:
Krok 1: Zdefiniuj zmienną, tworząc makro.
Kod:
Sub Ex3_UBound () Dim DataUpdate () Jako wariant zakończenia Sub
Krok 2: Aktywuj arkusz roboczy, który zawiera twoje dane. W takim przypadku nazwa arkusza to „ Dane ”.
Kod:
Sub Ex3_UBound () Dim DataUpdate () As Arkusze wariantów („Dane”). Aktywuj End Sub
Krok 3: Przypisz zakres do właśnie utworzonej zmiennej. W tym celu użyjemy zakresu arkuszy aktywowanych.
Kod:
Sub Ex3_UBound () Dim DataUpdate () As Arkusze wariantów („Dane”). Aktywuj DataUpdate = Zakres („A2”, Zakres („A1”). Koniec (xlDown). End (xlToRight)) End Sub
Krok 4: Dodaj nowy arkusz do programu Excel, w którym zaktualizowane dane można skopiować i wkleić.
Kod:
Sub Ex3_UBound () Dim DataUpdate () As Arkusze wariantów („Dane”). Aktywuj DataUpdate = Zakres („A2”, Zakres („A1”). Koniec (xlDown). Koniec (xlToRight)) Arkusze. Dodaj koniec Sub
Krok 5: Teraz użyj poniższego wiersza kodu, który umożliwia automatyczne kopiowanie i wklejanie danych z arkusza „Dane” do nowo utworzonego arkusza programu Excel.
Kod:
Sub Ex3_UBound () Dim DataUpdate () As Arkusze wariantów („Dane”). Aktywuj DataUpdate = Zakres („A2”, Zakres („A1”). Koniec (xlDown). Koniec (xlToRight)) Arkusze. Dodaj zakres (ActiveCell, ActiveCell.Offset (UBound (DataUpdate, 1) - 1, UBound (DataUpdate, 2) - 1)) = DataUpdate End Sub
Powyższy kod spowoduje przesunięcie komórek od arkusza „Data” do górnej granicy, którą można uzyskać za pomocą użytej funkcji UBound i przypisuje zakres do zmiennej DataUpdate.
Krok 6: Uruchom kod, naciskając klawisz F5 lub Run i zobacz wynik.
Jak widać, w skoroszycie programu Excel dodano nowy arkusz, w którym wszystkie dane z arkusza „Dane” są kopiowane automatycznie.
To jest kod dynamiczny. Chodzi mi o to, że mówię, że jest dynamiczny, chociaż dodam kolumny i wiersze, to zostaną one automatycznie skopiowane do nowego arkusza.
Krok 7: Dodajmy wiersze i kolumny do danych i zobaczmy, czy to rzeczywiście działa.
Krok 8: Naciśnij przycisk Uruchom ponownie po zaktualizowaniu arkusza danych i zobacz magię.
Jeśli widzisz, nowy arkusz jest dodawany (kolorowy), a także nowa kolumna Wiek wraz z dwoma nowymi wierszami. Oznacza to, że niezależnie od tego, co zaktualizujemy w pliku głównym (danych), ten kod automatycznie skopiuje wszystko z tego i wklei go w nowym arkuszu.
Rzeczy do zapamiętania
- UBound podaje górną granicę / maksymalną długość tablicy, a nie górną granicę z punktów danych obecnych w tablicy.
- Tablica zawsze zaczyna się od 0 pozycji równolegle do większości języków programowania, takich jak C, C ++, Python.
- Jeśli twoja tablica jest wielowymiarowa, musisz również podać argument wymiaru, który przyjmuje wartości liczbowe w postaci 1, 2, 3 itd. 1 oznacza One-Dimension, 2 dla Dwuwymiarowego i tak dalej.
Polecane artykuły
Jest to przewodnik po funkcji VBA UBound. Tutaj omawiamy sposób korzystania z funkcji Excel VBA UBound wraz z praktycznymi przykładami i szablonem Excel do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -
- Funkcja podziału VBA z przykładami
- Funkcja wielkich liter programu Excel
- VBA Match
- Funkcja SUFITOWA w Excelu
- Jak korzystać z arkuszy roboczych VBA?