L'utilisation de VBA pour accéder à la première feuille d'une feuille de calcul est Worksheets (1). Le premier élément dans un ListBox est myListBox.List (0). J'ai entendu dire que les collections sont basées sur 1, mais je ne sais pas ce qu'elles sont. Les baies VBA sont basées sur 0. Les fonctions de chaîne Excel comme MID sont basées sur 1. Existe-t-il un principe général sur ce qui est basé sur 0 ou 1, ou pourriez-vous en fournir une liste?
microsoft-excel-2007
vba
Noumenon
la source
la source
Réponses:
Il existe 3 principaux types de constructions de regroupement disponibles dans VBA, avec des distinctions entre les index
Collections - index basé sur 1
Collections Excel:
Le principal avantage des collections est la commodité d'accéder aux éléments par leur nom
Tableaux - basés sur 0 par défaut, mais le premier index peut être changé en n'importe quel nombre (illustré ci-dessous)
Une fois défini, il ne contiendra qu'un seul type d'éléments:
Dim x() As Long
Dim x() As Variant
Les variantes peuvent être n'importe quel type d'objet, y compris des classeurs, des feuilles, des plages, des tableaux
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)
Le principal avantage des tableaux est la performance lors de l'accès aux éléments par index
For index=0 To 10
les boucles sont plus rapides que lesFor-Each
bouclesDictionnaires - non indexés, mais les index peuvent être simulés avec des clés
Un ListBox est un objet complexe et est accessible via la collection de contrôles basée sur 0
La propriété .List () de ListBox est un tableau basé sur 0
Autres notes
Les index basés sur 0 sont la norme pour les autres langues
VBA a introduit le concept basé sur 1 pour le rendre plus intuitif pour les nouveaux utilisateurs:
Quelques exemples pratiques de la différence entre leurs index:
Lectures complémentaires:
la source