Usar VBA para acceder a la primera hoja de una hoja de trabajo es Hojas de trabajo (1). El primer elemento en un ListBox es myListBox.List (0). Escuché que las Colecciones están basadas en 1 pero no sé cuáles son. Las matrices de VBA están basadas en 0. Las funciones de cadena de Excel como MID están basadas en 1. ¿Existe un principio general sobre lo que se basa en 0 o 1, o podría proporcionar una lista de cada uno?
microsoft-excel-2007
vba
Noumenon
fuente
fuente
Respuestas:
Hay 3 tipos principales de construcciones de agrupación disponibles en VBA, con distinciones entre índices
Colecciones - índice basado en 1
Colecciones de Excel:
La principal ventaja de las colecciones es la conveniencia de acceder a los elementos por nombre.
Matrices: basadas en 0 de forma predeterminada, pero el primer índice se puede cambiar a cualquier número (se ilustra a continuación)
Una vez que se define, contendrá solo un tipo de elementos:
Dim x() As Long
Dim x() As Variant
Las variantes pueden ser cualquier tipo de objetos, incluidos libros de trabajo, hojas, rangos, matrices
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)
La principal ventaja de las matrices es el rendimiento al acceder a elementos por índice
For index=0 To 10
los bucles son más rápidos que losFor-Each
buclesDiccionarios: no indexados, pero los índices se pueden simular con Keys
Un ListBox es un objeto complejo y se puede acceder a través de la colección de controles basada en 0
La propiedad .List () de ListBox es una matriz basada en 0
Otras notas
Los índices basados en 0 son el estándar para otros idiomas
VBA introdujo el concepto basado en 1 para hacerlo más intuitivo para los nuevos usuarios:
Algunos ejemplos prácticos de la diferencia entre sus índices:
Otras lecturas:
fuente