Deklarowanie tablic w VBA

Stronę tą wyświetlono już: 166 razy

Tablice statyczne w VBA

Statycznie tworzone tablice nie mogą mieć zmienianego rozmiaru, ani też ustawionego rozmiaru za pomocą innej zmiennej typu całkowitego. Oto przykład deklaracji tablicy statycznej:

Listing 1
  1. Dim numbers(1 To 5) As Integer

Wczytywanie danych:

Listing 2
  1. For i = 1 To 5
  2. numbers(i) = InputBox("Podaj liczbę nr " & i)
  3. Next i

Odczytywanie danych:

Listing 3
  1. For Each number In numbers
  2. MsgBox number
  3. Next

Deklaracja tablic dwuwymiarowych:

Listing 4
  1. Dim numbers(1 To 5, 1 To 2) As Integer

Odwołanie się do konkretnego indeksu:

Listing 5
  1. numbers(1,1) = 10

Tworzenie tablicy za pomocą funkcji Array

Funkcja Array pozwala na łatwe deklarowanie tablic wraz z ich inicjalizacją, oto przykład:

Listing 6
  1. Dim numbers as Variant
  2. numbers = Array(4, 8, 15, 16, 23, 42)
  3. MsgBox numbers(0)

Jak widać, na powyższym przykładzie indeksowanie tym razem zaczyna się od 0, można to zmienić umieszczając na początku modułu następujący kod:

Listing 7
  1. Option Explicit
  2. Option Base 1

Dynamiczne tworzenie tablicy

Za pomocą słowa kluczowego ReDim można ustawiać a nawet zmieniać rozmiar tablicy, której statycznie nie przypisano rozmiaru. Oto przykład:

Listing 8
  1. Dim numbers() As Integer, size as Integer
  2. size = InputBox("Podaj rozmiar tablicy:")
  3. ReDim numbers(size)

Obliczanie rozmiaru tablicy

W VBA aby obliczyć rozmiar tablicy konieczne jest użycie dwóch funkcji UBound - zwracająca górną granicę indeksowania, LBound - zwracająca dolną granicę indeksowania. Oto przykład obliczania rozmiaru tablicy:

Listing 9
  1. Dim table as Variant
  2. table = Array(1, 2, 3, 4, 5)
  3. Dim size as Integer
  4. size = Ubound(table, 1) - LBound(table, 1) + 1
  5. MsgBox size

Komentarze