Korzystanie z VBA w celu uzyskania dostępu do pierwszego arkusza w arkuszu to Arkusze (1). Pierwszym elementem ListBox jest myListBox.List (0). Słyszałem, że Kolekcje są oparte na 1, ale nie wiem, co to są. Macierze VBA są oparte na 0. Funkcje ciągów Excel, takie jak MID, są oparte na 1. Czy istnieje ogólna zasada oparta na 0 lub 1, czy możesz podać ich listę?
microsoft-excel-2007
vba
Noumenon
źródło
źródło
Odpowiedzi:
Istnieją 3 główne typy konstrukcji grupujących dostępne w VBA, z rozróżnieniem między indeksami
Kolekcje - indeks 1
Kolekcje Excel:
Główną zaletą kolekcji jest wygoda dostępu do elementów według nazwy
Tablice - domyślnie oparte na 0, ale pierwszy indeks można zmienić na dowolną liczbę (zilustrowano poniżej)
Po zdefiniowaniu pomieści tylko jeden typ przedmiotów:
Dim x() As Long
Dim x() As Variant
Warianty mogą być dowolnymi obiektami, w tym skoroszytami, arkuszami, zakresami, tablicami
Dim x As Variant: x = Array(1) '1 Variant variable containing 1 array
Dim y(2) As Variant '1 Variant array containing 3 arrays
y(0) = Array(1): y(1) = Array(2): y(2) = Array(3)
Główną zaletą tablic jest wydajność podczas uzyskiwania dostępu do elementów według indeksu
For index=0 To 10
Pętle są szybsze niżFor-Each
pętleSłowniki - nie indeksowane, ale indeksy można symulować za pomocą kluczy
ListBox jest złożonym obiektem i można uzyskać do niego dostęp poprzez kolekcję formantów opartych na 0
Właściwość .List () ListBox jest tablicą 0
Inne notatki
Indeksy oparte na 0 są standardem dla innych języków
VBA wprowadziła koncepcję 1, aby była bardziej intuicyjna dla nowych użytkowników:
Kilka praktycznych przykładów różnicy między ich indeksami:
Dalsza lektura:
źródło