O uso do VBA para acessar a primeira planilha em uma planilha é Planilhas (1). O primeiro item em um ListBox é myListBox.List (0). Ouvi dizer que as coleções são baseadas em 1, mas não sei o que são. Matrizes VBA são baseadas em 0. As funções de seqüência de caracteres do Excel como MID são baseadas em 1. Existe um princípio geral sobre o que é baseado em 0 ou 1, ou você poderia fornecer uma lista de cada um?
microsoft-excel-2007
vba
Noumenon
fonte
fonte
Respostas:
Existem 3 tipos principais de construções de agrupamento disponíveis no VBA, com distinções entre índices
Coleções - índice baseado em 1
Coleções do Excel:
A principal vantagem das coleções é a conveniência de acessar elementos pelo nome
Matrizes - baseadas em 0 por padrão, mas o primeiro índice pode ser alterado para qualquer número (ilustrado abaixo)
Uma vez definido, ele conterá apenas um tipo de itens:
Dim x() As Long
Dim x() As Variant
As variantes podem ser qualquer tipo de objeto, incluindo pastas de trabalho, planilhas, intervalos e matrizes
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)
A principal vantagem das matrizes é o desempenho ao acessar itens por índice
For index=0 To 10
loops são mais rápidos queFor-Each
loopsDicionários - não indexados, mas os índices podem ser simulados com Chaves
Um ListBox é um objeto complexo e pode ser acessado através da coleção de controles baseada em 0
A propriedade .List () do ListBox é uma matriz baseada em 0
Outras notas
Índices baseados em 0 são o padrão para outros idiomas
O VBA introduziu o conceito baseado em 1 para torná-lo mais intuitivo para novos usuários:
Alguns exemplos práticos da diferença entre seus índices:
Leitura adicional:
fonte