Tabella vba: guida da base a avanzata
Punti chiave
- Pensa a una tabella all’interno di una tabella VBA come un mini database per archiviare e organizzare i dati (esempio: nome dello studente, materia e punteggi).
- Prima di usarlo, devi dichiarare un array; con il suo tipo di dati e il numero di valori che desideri memorizzare al suo interno.
Se vuoi lavorare con big data utilizzando VBA, devi comprendere le tabelle e come utilizzarle nei codici VBA. In questa guida esploreremo tutti gli aspetti della tabella e vedremo anche alcuni esempi da utilizzare. loro.
Cos’è una tabella in VBA?
In VBA, un array è una variabile che può memorizzare più valori . Puoi accedere a tutti i valori in questo array contemporaneamente oppure puoi anche accedere a un singolo valore specificando il suo numero di indice che è la posizione di quel valore nell’array. Immagina di avere un appuntamento con il nome, la materia e i voti dello studente.
Puoi memorizzare tutte queste informazioni in una tabella, non solo per uno studente ma per centinaia. Ecco un semplice esempio per spiegare una tabella.
Nell’esempio sopra, hai un array di dieci elementi (dimensione dell’array) e ciascun elemento ha una posizione specifica (Indice).
Quindi, se vuoi utilizzare un elemento che si trova in ottava posizione, devi fare riferimento a quell’elemento utilizzando il suo numero di indice.
L’array utilizzato nell’esempio precedente è un array unidimensionale. Ma più avanti in questa guida impareremo anche gli array multidimensionali.
Come dichiarare un array in VBA
Come ho detto sopra, un array è il tipo di variabile, quindi è necessario dichiararlo utilizzando le parole chiave (Dim, Private, Public e Static). A differenza di una variabile normale, quando dichiari un array, devi utilizzare una coppia di parentesi dopo il nome dell’array.
Diciamo che vuoi dichiarare un array che abbiamo usato nell’esempio sopra.
Passaggi per dichiarare un array.
- Innanzitutto, utilizza la parola chiave “Dim”, inserisci il nome della tabella e digita le parentesi.
- Successivamente, è necessario specificare il tipo di dati per l’array. Se non è stato specificato un tipo di dati, VBA assegnerà il tipo di dati appropriato.
- Successivamente, devi definire il numero di elementi che desideri memorizzare nell’array.
- In definitiva, per assegnare un valore a un elemento in un array, è necessario utilizzare il numero di indice dell’elemento per identificarlo e quindi assegnargli un valore.
Codice 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
Note veloci
- Nel codice sopra, hai prima l’istruzione Dim che definisce l’array unidimensionale che può memorizzare fino a 10 elementi e ha un tipo di dati stringa.
- Successivamente, hai 10 righe di codice che definiscono gli elementi di un array da 0 a 9.
Tabella con tipo di dati variabile
Quando si dichiara un array se non si specifica il tipo di dati, VBA utilizzerà automaticamente il tipo di dati variabile, determinando un leggero aumento dell’utilizzo della memoria e questo aumento dell’utilizzo della memoria potrebbe rallentare le prestazioni del codice.
Pertanto è meglio definire un tipo di dati specifico quando si dichiara un array, a meno che non sia necessario utilizzare il tipo di dati Variant.
Restituzione di informazioni da un array
Come accennato in precedenza, per ottenere informazioni da un array è possibile utilizzare il numero di indice dell’elemento per specificarne la posizione. Ad esempio, se volessi restituire l’ottavo elemento dell’area creata nell’esempio precedente, il codice sarebbe:
Nel codice sopra, hai inserito il valore nella cella A1 utilizzando l’elemento dell’array 8.
Utilizzare l’opzione base 1
Sono sicuro che in questo momento hai questa domanda in mente: perché abbiamo iniziato il nostro elenco di articoli da zero anziché da uno?
Beh, non è un errore.
Quando furono costruiti i linguaggi di programmazione , alcune disattenzioni trasformarono questa struttura in un elenco di elementi in un array. Nella maggior parte dei linguaggi di programmazione è possibile trovare la stessa struttura degli elementi dell’elenco.
Tuttavia, a differenza della maggior parte degli altri linguaggi informatici, in VBA puoi normalizzare il funzionamento dell’indice, ovvero puoi farlo iniziare con 1. L’unica cosa che devi fare è aggiungere un’istruzione basata sulle opzioni all’inizio del modulo prima di dichiarare un array.array.
Ora questa tabella sarà simile alla seguente:
Cerca in una tabella
Quando memorizzi valori in un array, potrebbero esserci momenti in cui è necessario eseguire una ricerca nell’array.
In questo caso, è necessario conoscere i metodi che è possibile utilizzare. Ora guarda il codice seguente che può aiutarti a capire come cercare un valore in un 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
- Nella prima parte del codice hai delle variabili che dovrai utilizzare più avanti nel codice.
- Successivamente, la parte successiva consiste nel generare numeri casuali utilizzando RND per ottenere 10 valori per l’array.
- Successivamente, una casella di input per inserire il valore che desideri cercare nella tabella.
- In questa parte hai un codice per la stringa da utilizzare nella finestra di messaggio se il valore inserito non viene trovato.
- Questa parte del codice utilizza un ciclo per scorrere ogni elemento dell’array e verificare se il valore immesso è nell’array o meno.
- L’ultima parte del codice visualizza un messaggio che indica se un valore è stato trovato o meno.