Tipo variabile stringa
Il tipo di dati String è uno dei tipi di dati più comuni in VBA. Memorizza "stringhe" di testo.
Per dichiarare una variabile String variabile, si utilizza l'istruzione Dim (abbreviazione di Dimension):
1 | Dim strName as String |
Per assegnare un valore a una variabile si usa il segno di uguale:
1 | strName = "Fred Smith" |
Inserendo questo in una procedura si presenta così:
12345678 | Sub strEsempio()'dichiarare la stringaDim strName come stringa'popola la stringastrName = "Fred Smith"'mostra la finestra del messaggioMsgBox strnameFine sottotitolo |
Se esegui il codice sopra, verrà mostrata la seguente finestra di messaggio.
Variabile stringa fissa
Esistono in realtà 2 tipi di variabili stringa: fisse e variabili.
La variabile stringa "variabile" (mostrata nell'esempio precedente) consente alla stringa di essere di qualsiasi lunghezza. Questo è più comune.
La variabile stringa "fissa" definisce la dimensione della stringa. Una stringa fissa può contenere fino a 65.400 caratteri.
1 | Dim strName come stringa *20 |
Quando si definisce una variabile fissa, il numero di caratteri nella variabile viene bloccato, anche se si utilizzano meno caratteri.
Notare gli spazi nel grafico sottostante: la variabile ha dei segnaposto per il resto dei caratteri nella stringa poiché "Fred Smith" è inferiore a 20 caratteri.
Tuttavia, se hai dichiarato una stringa senza specificare la lunghezza, la stringa conterrà solo il numero di caratteri che le viene passato.
Dichiara variabile stringa a livello di modulo o globale
Nell'esempio precedente, hai dichiarato la variabile String all'interno di una procedura. Le variabili dichiarate con una procedura possono essere utilizzate solo all'interno di tale procedura.
Invece, puoi dichiarare variabili String 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 stringa |
Se si dichiarasse la variabile stringa a livello di modulo e la si utilizzasse in un modulo diverso, si verificherebbe un errore.
Tuttavia, se si utilizza la parola chiave Public per dichiarare la variabile stringa, l'errore non si verifica e la procedura viene eseguita perfettamente.
Converti valori memorizzati come stringa
Potrebbe esserci un momento in cui in Excel sono presenti valori archiviati come testo, ad esempio potresti aver importato un file CSV che potrebbe aver inserito testo anziché numeri.
Nota che il valore in A1 è allineato a sinistra, indicando un valore di testo.
Puoi usare a Funzione VBA può essere usato per convertire questi numeri in testo
12345678 | Sub ConvertValue()'popola la stringastrQty = Intervallo ("A1")'popola il doppio con la stringadblQty = strQty'popola l'intervallo con il numeroIntervallo("A1") = dblQtyFine sottotitolo |
Una volta eseguito il codice, il numero si sposterà a destra, indicando che ora è memorizzato come numero.
Ciò è particolarmente utile quando si scorre un ampio intervallo di celle.
123456789101112131415 | Sub ConvertValue()Dim strQty As String, dblQty As DoubleDim rw As Integer, i As Integer'conta le righe da convertirerw = Range("A1", Range("A1").End(xlDown)).Rows.Count"scorri le celle e converti ciascuna in un numero"Per i = 0 Per rw - 1'popola la stringastrQty = Range("A1").Offset(i, 0)'popola il doppio con la stringadblQty = strQty'popola l'intervallo con il numeroIntervallo("A1").Offset(i, 0) = dblQtyAvanti ioFine sottotitolo |
Il risultato sarà che tutte le celle verranno quindi convertite in numeri
Stanco di cercare esempi di codice VBA? Prova AutoMacro!
Converti stringa memorizzata come valori
Allo stesso modo, potrebbero esserci valori che è necessario convertire da una stringa a un valore, ad esempio se si richiede uno zero iniziale su un numero di telefono.
123456789101112131415 | Sub ConvertString()Dim strPhone As String, dblPhone As DoubleDim rw As Integer, i As Integer'conta le righe da convertirerw = Range("A1", Range("A1").End(xlDown)).Rows.Count"scorri le celle e converti ciascuna in un numero"Per i = 0 Per rw - 1'popola la stringadblPhone = Range("A1").Offset(i, 0)'popola il doppio con la stringastrPhone = "'0" & dblPhone'popola l'intervallo con il numeroIntervallo("A1").Offset(i, 0) = strphoneAvanti ioFine sottotitolo |
Nota che devi iniziare la stringa di testo con un apostrofo ('), prima dello zero per dire a Excel di inserire il valore come stringa.