Tabela vba: guia básico ao avançado
Pontos chave
- Pense em uma tabela dentro de uma tabela VBA como um mini banco de dados para armazenar e organizar dados (exemplo: nome do aluno, disciplina e notas).
- Antes de usá-lo, você deve declarar um array; com seu tipo de dados e a quantidade de valores que deseja armazenar nele.
Se você deseja trabalhar com big data usando VBA, você precisa entender tabelas e como usá-las em códigos VBA. Neste guia você explorará todos os aspectos da tabela e também veremos alguns exemplos de uso. eles.
O que é uma tabela em VBA?
No VBA, um array é uma variável que pode armazenar vários valores . Você pode acessar todos os valores deste array de uma vez ou também pode acessar um único valor especificando seu número de índice que é a posição desse valor no array. Imagine que você tem um encontro marcado com o nome, disciplina e notas do aluno.
Você pode armazenar todas essas informações em uma tabela, não apenas para um aluno, mas para centenas. Aqui está um exemplo simples para explicar uma tabela.
No exemplo acima, você tem um array de dez elementos (tamanho do array) e cada elemento possui uma posição específica (Índice).
Portanto, se quiser usar um elemento que está na oitava posição, você deve se referir a esse elemento usando seu número de índice.
O array que usamos no exemplo acima é um array unidimensional. Porém, mais adiante neste guia, também aprenderemos sobre matrizes multidimensionais.
Como declarar um array em VBA
Como mencionei acima, um array é o tipo de variável, então você precisa declará-lo usando as palavras-chave (Dim, Private, Public e Static). Ao contrário de uma variável normal, ao declarar um array, você deve usar um par de parênteses após o nome do array.
Digamos que você queira declarar um array que usamos no exemplo acima.
Etapas para declarar um array.
- Primeiro, use a palavra-chave “Dim”, insira o nome da tabela e digite parênteses.
- Em seguida, você precisa especificar o tipo de dados da matriz. Se você não tiver um tipo de dados especificado, o VBA atribuirá o tipo de dados apropriado.
- Depois disso, você precisa definir a quantidade de elementos que deseja armazenar no array.
- Em última análise, para atribuir um valor a um elemento em uma matriz, você deve usar o número de índice do elemento para identificá-lo e então atribuir um valor a ele.
Código completo
Sub vba_array_example() Dim StudentsNames(10) As String StudentsNames(0) = "Waylon" StudentsNames(1) = "Morton" StudentsNames(2) = "Rudolph" StudentsNames(3) = "Georgene" StudentsNames(4) = "Billi" StudentsNames(5) = "Enid" StudentsNames(6) = "Genevieve" StudentsNames(7) = "Judi" StudentsNames(8) = "Madaline" StudentsNames(9) = "Elton" End Sub
Notas rápidas
- No código acima, você primeiro tem a instrução Dim que define o array unidimensional que pode armazenar até 10 elementos e possui um tipo de dados string.
- Depois disso, você tem 10 linhas de código que definem os elementos de um array de 0 a 9.
Tabela com tipos de dados variados
Ao declarar um array, se você não especificar o tipo de dados, o VBA usará automaticamente o tipo de dados variável, resultando em um ligeiro aumento no uso de memória, e esse aumento no uso de memória pode retardar o desempenho do código.
Portanto, é melhor definir um tipo de dados específico ao declarar um array, a menos que seja necessário usar o tipo de dados variante.
Retornando informações de um array
Como mencionei anteriormente, para obter informações de um array, você pode usar o número de índice do elemento para especificar sua posição. Por exemplo, se você quisesse retornar o 8º elemento da área que criamos no exemplo anterior, o código seria:
No código acima, você inseriu o valor na célula A1 usando o elemento 8 da matriz.
Use a opção base 1
Tenho certeza de que você está com essa pergunta em mente agora: por que começamos nossa lista de itens do zero em vez de um?
Bem, isso não é um erro.
Quando as linguagens de programação foram construídas pela primeira vez , algum descuido fez dessa estrutura uma lista de elementos de um array. Na maioria das linguagens de programação, você pode encontrar a mesma estrutura de itens de lista.
No entanto, ao contrário da maioria das outras linguagens de computador, no VBA você pode normalizar o funcionamento do índice, o que significa que você pode fazê-lo começar com 1. A única coisa que você precisa fazer é adicionar uma instrução baseada nas opções no início do módulo antes de declarar um matriz.matriz.
Agora esta tabela ficará parecida com a abaixo:
Pesquisar em uma tabela
Ao armazenar valores em um array, pode haver momentos em que você precise fazer uma pesquisa no array.
Nesse caso, você precisa conhecer os métodos que pode usar. Agora observe o código abaixo, que pode ajudá-lo a entender como pesquisar um valor em um array.
Sub vba_array_search() 'this section declares an array and variables _ that you need to search within the array. Dim myArray(10) As Integer Dim i As Integer Dim varUserNumber As Variant Dim strMsg As String 'This part of the code adds 10 random numbers to _ the array and shows the result in the _ immediate window as well. For i = 1 To 10 myArray(i) = Int(Rnd * 10) Debug.Print myArray(i) Next i 'it is an input box that asks you the number that you want to find. Loopback: varUserNumber = InputBox _ ("Enter a number between 1 and 10 to search for:", _ "Linear Search Demonstrator") 'it's an IF statement that checks for the value that you _ have entered in the input box. If varUserNumber = "" Then End If Not IsNumeric(varUserNumber) Then GoTo Loopback If varUserNumber < 1 Or varUserNumber > 10 Then GoTo Loopback 'message to show if the value doesn't found. strMsg = "Your value, " & varUserNumber & _ ", was not found in the array." 'loop through the array and match each value with the _ the value you have entered in the input box. For i = 1 To UBound(myArray) If myArray(i) = varUserNumber Then strMsg = "Your value, " & varUserNumber & _ ", was found at position " & i & " in the array." Exit For End If Next i 'message box in the end MsgBox strMsg, vbOKOnly + vbInformation, "Linear Search Result" End Sub
- Na primeira parte do código você tem variáveis que você precisa usar posteriormente no código.
- Depois disso, a próxima parte é gerar números aleatórios usando RND para obter 10 valores para o array.
- A seguir, uma caixa de entrada para informar o valor que deseja pesquisar na tabela.
- Nesta parte você tem um código para a string usar na caixa de mensagem caso o valor que você digitou não for encontrado.
- Esta parte do código usa um loop para percorrer cada elemento do array e verificar se o valor que você inseriu está no array ou não.
- A última parte do código exibe uma mensagem indicando se um valor foi encontrado ou não.