Tablice w VBA – dodatkowe informacje

Tablice VBA – informacje dla zaawansowanych

Zakładam, że jeśli czytasz ten artykuł to wcześniej zapoznałeś się z podstawowymi informacjami o tablicach VBA, o których pisałem w tym artykule: VBA Tablice. W artykule, który czytasz poznasz bardziej zaawansowane informacje o tablicach VBA. Są to m.in funkcje, którymi operujesz na tablicach, sposoby jak szybko odczytać dane z tablicy i jak je szybko do tablicy wgrać.

Funkcje Tablic LBound UBound IsArray

W przypadku tablic VBA możemy korzystać z funkcji odnoszących się do całej tablicy. Możemy m.in. za ich pomocą sprawdzić, czy nasza zmienna jest tablicą. Możemy także sprawdzić indeks górny i indeks dolny tablicy, by sprawdzić jej wielkość. By przetestować wyżej wymienione funkcje stwórzmy prostą tablicę i uzupełnijmy ją wartościami, pamiętając by nie wypełniać wszystkich elementów tablicy. Kod tworzący i wypełniający taką tablicę zamieszczam poniżej:

'tomaszkenig.pl
Sub TabliceFunkcje()

    Dim TabTablica(9) As String
    
        TabTablica(3) = "Robert Kubica"
        TabTablica(6) = "Michael Schumacher"
        TabTablica(8) = "Nico Resberg"
        
        Debug.Print IsArray(TabTablica)
        Debug.Print LBound(TabTablica)
        Debug.Print UBound(TabTablica)

End Sub
Kurs VBA - tablice funkcje IsArray, UBound, LBound
Kurs VBA – tablice funkcje IsArray, UBound, LBound

Jak widzisz stworzyliśmy tablicę 10-cio elementową o indeksach od 0 do 9. Jak widzisz funkcja Is Array pomaga nam stwierdzić, czy element jest tablicą. Funkcje LBound i Ubound zwracają indeksy, bez względu na to, czy elementy tablicy są wypełnione. Poniżej rozszerzony opis:

Rozszerzony opis funkcji tablic

IsArray – Funkcja zwraca wartość True, jeśli badany element jest tablicą.

LBound(tablica [,wymiar]) – Funkcja zwraca dolny indeks tablicy. Jeśli pracujemy na tablicach wielowymiarowych, drugi argument funkcji służy do podania wymiaru w tablicy, który chcemy zbadać. Z podstawowych informacji o tablicach VBA wiemy, że wymiary mogą mieć różną rozpiętość. Jeśli mamy do czynienia z tablicą wielowymiarową, a nie uzupełnimy argumentu określającego wymiar, funkcja zwróci indeks dla pierwszego wymiaru tablicy.

UBound(tablica [,wymiar]) – Funkcja zwraca górny indeks tablicy. Jeśli pracujemy na tablicach wielowymiarowych, drugi argument funkcji służy do podania wymiaru w tablicy, który chcemy zbadać. Jeśli mamy do czynienia z tablicą wielowymiarową, a nie uzupełnimy argumentu określającego wymiar, funkcja zwróci indeks dla pierwszego wymiaru tablicy.

Przykład LBound i UBound dla tablic wielowymiarowych

Poniżej krótki przykład zastosowania funkcji LBound i Ubound dla tablicy dwuwymiarowej i trójwymiarowej. Wymiar określamy liczbą od 1 do liczby wymiarów tablicy. Jeśli go nie określimy, funkcje VBA LBound i UBound zwrócą informacje o indeksach dla pierwszego wymiaru tablicy.

'tomaszkenig.pl
Sub TabliceFunkcje2()

    Dim TabTablica1(9, 1 To 5) As String
    Dim TabTablica2(2, 1 To 5, 18) As String
        
        Debug.Print LBound(TabTablica1, 2)
        Debug.Print UBound(TabTablica1)
        
        Debug.Print LBound(TabTablica2)
        Debug.Print UBound(TabTablica2, 3)

End Sub
Kurs VBA - tablice funkcje UBound, LBound VBA Dla tablic wielowymiarowych
Kurs VBA – tablice funkcje UBound, LBound VBA Dla tablic wielowymiarowych

Tworzenie tablicy za pomocą funkcji Array

Tablice możesz tworzyć także za pomocą Funkcji VBA Array. W jaki sposób to zrobić? Stwórz zmienną o typie Variant. Następnie Przypisz do niej wartości w argumentach funkcji Array oddzielone przecinkami. Przykład poniżej:

'tomaszkenig.pl
Sub FunkcjaArray()

    Dim Panstwa As Variant
    Panstwa = Array("Polska", "Niemcy", "Czechy", "Węgry")
    Debug.Print Panstwa(0)

    Dim Miasta As Variant
    Miasta = Array("Warszawa", "Berlin", "Praga", "Budapeszt")
    Debug.Print Miasta(0)

End Sub

W ten sposób zadeklarowana i uzupełniona tablica ma jedną wadę. Składa się z elementów o typie danych Variant, który nie jest typem wydajnym. Sam jednak sposób tworzenia tablicy jest na tyle szybki, że warto z niego korzystać.

Kurs VBA - Funkcja VBA Array
Kurs VBA – Funkcja VBA Array

Szybkie pobieranie danych z arkusza do tablicy VBA

W jaki sposób szybko pobrać dane do tablicy VBA? Dane do tablicy VBA możesz pobrać na wiele sposobów. Możemy oczywiście wykorzystać od tego pętlę, która pobierze wszystkie elementy arkusza po kolei, jednak nie jest to szybkie rozwiązanie. Najłatwiejszym sposobem, by wprowadzić dane z arkusza Excel do tablicy dwuwymiarowej (bo arkusz też ma dwa wymiary) jest odniesienie się do zakresu. W celu ćwiczenia w załączonym do tego artykułu pliku dodałem arkusz zawierający dane, które tworzyliśmy przy pomocy pętli Do Loop w jednym z poprzednich rozdziałów kursu VBA Excel. Poniższy przykład wprowadza te właśnie dane do tablicy. Naszym zadaniem jest wprowadzenie do tablicy danych i pokazanie danych z drugiego rekordu tabeli. Nagłówki przy imporcie danych z arkusza do tablicy pomijamy.

Sub ArkuszDoTablicy()

    Dim DaneZArkusza As Variant
    DaneZArkusza = Range("A2:E30")
    
    Debug.Print DaneZArkusza(2, 1)
    Debug.Print DaneZArkusza(2, 2)
    Debug.Print DaneZArkusza(2, 3)
    Debug.Print DaneZArkusza(2, 4)
    Debug.Print DaneZArkusza(2, 5)
    
End Sub
Kurs VBA - Pobieranie danych z arkusza do tablicy VBA Excel
Kurs VBA – Pobieranie danych z arkusza do tablicy VBA Excel

Artykuł jest częścią kursu Vba Excel. Całość kursu znajdziesz pod tym linkiem: Kurs VBA. Poniżej zamieszczam plik z kodem programu:

Kurs_excel_vba_tablice_dodatkowe_informacje.xlsm

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

3 komentarze “Tablice w VBA – dodatkowe informacje”