Variante Tipo Variabile
Una Variant Variant può contenere dati in qualsiasi momento (stringhe, interi, decimali, oggetti, ecc.). Se non dichiari un tipo di variabile, la tua variabile sarà considerata una variante.
Per dichiarare una variabile Variant, si utilizza l'istruzione Dim (abbreviazione di Dimension):
1 | Dim varName come Variant |
1 | Dim rng come variante |
Quindi, per assegnare un valore a una variabile, utilizzare semplicemente il segno di uguale:
1 | varName = "Giovanni" |
1 | rng = Fogli (1). Intervallo ("A1") |
Inserendo questo in una procedura si presenta così:
12345678910 | Sub strEsempio()'dichiarare le variantiDim strName As VariantDim rng come variante'popola le variabilistrName = "Fred Smith"Imposta rng = Fogli (1). Intervallo ("A1")'popola il fogliorng.Value = strNameFine sottotitolo |
Se esegui il codice sopra, la cella A1 nel foglio 1 verrà popolata con "Fred Smith"
Con i nomi sopra dichiarati, potremmo concludere che il varName conterrebbe testo, e il objSheet conterrebbe un oggetto foglio di lavoro. Ma in realtà, qualsiasi tipo di dato può essere diretto alla variabile.
Potresti popolare le variabili dichiarate sopra come segue e non si verificherebbe alcun errore.
1 | nomevar = 6 |
1 | objSheet - "Fred" |
È insolito utilizzare variabili varianti e non è considerata una buona pratica. A volte, tuttavia, le variabili Variant sono utili.
Dichiara Variante Variabile a Livello Modulo o Globale
Nell'esempio precedente, hai dichiarato la variabile Variant all'interno di una procedura. Le variabili dichiarate con una procedura possono essere utilizzate solo all'interno di tale procedura.
Invece, puoi dichiarare le variabili Variant a livello di modulo o globale.
Livello modulo
Livello modulo le variabili sono dichiarate all'inizio dei moduli di codice con il fioco dichiarazione.
Queste variabili possono essere utilizzate con qualsiasi procedura in quel modulo di codice.
Livello globale
Livello globale le variabili sono anche dichiarate all'inizio dei moduli di codice. Tuttavia, invece di usare il fioco affermazione, usi il Pubblico istruzione per indicare che la variabile stringa è disponibile per essere utilizzata in tutto il progetto VBA.
1 | strName pubblico come variante |
Se si dichiarasse la variabile variant a livello di modulo e la si utilizzasse in un modulo diverso, si verificherebbe un errore.
Se avessi usato la parola chiave Public per dichiarare la variabile variant, l'errore non si sarebbe verificato e la procedura sarebbe stata eseguita perfettamente.
Utilizzo di una variante per popolare Excel
Considera la seguente procedura:
12345678910111213141516171819 | Variabile di prova secondaria'dichiarare una stringa per contenere il nome del prodottoDim strProdotto come stringa'dichiarare un numero intero per contenere la quantità di prodottoDim iQty come intero'dichiarare il doppio per mantenere il prezzo del prodotto e il prezzo totaleDim dblPrice as DoubleDim dblTotal come Double'popola le variabilistrProduct = "Farina per tutti gli usi"iQtà = 3dblPrice = "$5,00"dblTotal = "$15,00"'popola il foglio ExcelIntervallo("A1") = strProdottoIntervallo ("A2") = iQtàIntervallo("A3") = dblPriceIntervallo("A4") = dblTotaleFine sottotitolo |
Quando eseguiamo questo codice, si verifica il seguente errore.
Fare clic su Debug
Non puoi inserire un simbolo del dollaro nella variabile poiché la variabile è dichiarata come a Doppio, e quindi non può memorizzare valori di stringa.
Dichiarare dblPrezzo e dblTotale as Variants, il che significa che non sei limitato a un tipo di dati.
1 | Dim dblPrice come variante |
1 | Dim dblTotal come variante |
Riesegui il codice e i dati appariranno nel foglio Excel come dovrebbero.
Si noti che i dati inseriti in A4 e A5 vengono poi automaticamente convertiti da Excel in numeri.
Dichiarazione di un array dinamico
Le variabili varianti sono utili anche quando si dichiara un array dinamico poiché consentono di modificare le dimensioni dell'array durante l'esecuzione.
Con unMatrice Variante, non è necessario definire la dimensione dell'array. La dimensione si regolerà automaticamente.
123456789 | Sub VariantArray()Dim arrList() come variante"Definisci valori"ArrList= Array(1, 2, 3, 4)'Modificare valoriArrList= Array(1,2,3,4,5,6)'Posizione di uscita 4'MsgBox arrVar(4)Fine sottotitolo |