Der Zugriff auf das erste Blatt eines Arbeitsblatts über VBA erfolgt über Arbeitsblätter (1). Das erste Element in einer ListBox ist myListBox.List (0). Ich habe gehört, dass Sammlungen 1-basiert sind, aber ich weiß nicht, was sie sind. VBA-Arrays basieren auf 0. Excel-Zeichenfolgenfunktionen wie MID basieren auf 1. Gibt es ein allgemeines Prinzip, was auf 0 oder 1 basiert, oder könnten Sie eine Liste von jedem bereitstellen?
microsoft-excel-2007
vba
Noumenon
quelle
quelle
Antworten:
In VBA stehen drei Haupttypen von Gruppierungskonstrukten zur Verfügung, wobei zwischen Indizes unterschieden wird
Sammlungen - 1-basierter Index
Excel-Sammlungen:
Der Hauptvorteil von Sammlungen ist der bequeme Zugriff auf Elemente über den Namen
Arrays - standardmäßig 0-basiert, aber der erste Index kann in eine beliebige Zahl geändert werden (siehe Abbildung unten)
Sobald es definiert ist, enthält es nur einen Elementtyp:
Dim x() As Long
Dim x() As Variant
Varianten können alle Arten von Objekten sein, einschließlich Arbeitsmappen, Blätter, Bereiche und Arrays
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)
Der Hauptvorteil von Arrays ist die Leistung beim Zugriff auf Elemente über den Index
For index=0 To 10
Loops sind schneller alsFor-Each
LoopsWörterbücher - nicht indiziert, aber Indizes können mit Schlüsseln simuliert werden
Eine ListBox ist ein komplexes Objekt und kann über die 0-basierte Sammlung von Steuerelementen aufgerufen werden
Die .List () - Eigenschaft von ListBox ist ein 0-basiertes Array
Weitere Hinweise
0-basierte Indizes sind der Standard für andere Sprachen
VBA hat das 1-basierte Konzept eingeführt, um es für neue Benutzer intuitiver zu machen:
Einige praktische Beispiele für den Unterschied zwischen ihren Indizes:
Weitere Lektüre:
quelle