Funzioni di manipolazione delle stringhe VBA e OperaTors
⚡ Riepilogo intelligente
Funzioni di manipolazione delle stringhe VBA e Operai tori combinano, misurano ed esprimonotracTesto all'interno delle macro di Excel. Questa pagina spiega l'operatore di concatenazione, le funzioni Left, Right, Mid, Len e InStr, la divisione e l'unione e gli errori che più spesso causano problemi al codice stringa.
Stringa VBA OperaTors
I dati stringa vengono utilizzati per contenere dati costituiti da numeri, caratteri e simboli. "Jul-2015" è un esempio di dati di stringa. È composto da
- Personaggi (luglio)
- Simbolo (-)
- Numbers (2015)
Gli operatori di stringa vengono utilizzati per manipolare i dati di stringa. Ad esempio, puoi concatenare il valore di luglio-2015 dalle prime 3 lettere del mese e dell'anno come "Luglio-2015".
La tabella seguente mostra l'operatore di concatenazione delle stringhe VBA.
| S / N | Operator | Descrizione | Esempio | Uscita |
|---|---|---|---|---|
| 1 | & | Concatena: questo operatore viene utilizzato per concatenare le stringhe insieme | “Giovanni” e “Daina” | John Doe |
Fonte di esempio Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
L'esecuzione del codice sopra riportato produce il seguente risultato
La e commerciale non è l'unico simbolo che compare per unire il testo, e la differenza tra i due diventa rilevante quando sono coinvolti i numeri.
Differenza tra & e + nella concatenazione di stringhe
VBA accetta sia la e commerciale (&) che il segno più (+) tra due valori di testo, quindi i principianti spesso li considerano intercambiabili. Il loro comportamento cambia non appena uno degli operandi è un numero o un valore vuoto, e solo uno dei due è sicuro.
| Comportamento | e (&) | + (più) |
|---|---|---|
| Due valori di testo | Si unisce a loro: “Guru" e "99" resi Guru99 | Si unisce a loro: “Guru” + “99” restituisce Guru99 |
| Testo e numero | Converte il numero in testo: “Età” & 30 restituisce Età 30 | Genera un errore di mancata corrispondenza del tipo |
| Due stringhe numeriche | “10” & “5” restituisce 105 | “10” + “5” possono sommarsi e restituire 15 |
| Un valore nullo | Tratta Null come una stringa vuota | Restituisce Null e scarta l'intero risultato |
Suggerimento: Utilizzare sempre la e commerciale per la concatenazione e riservare il segno più per operazioni aritmeticheInserisci uno spazio prima e dopo la e commerciale (&), perché la stringa Total& viene interpretata da VBA come un carattere di dichiarazione di tipo Long.
Funzioni di manipolazione delle stringhe VBA
La manipolazione delle stringhe VBA è un elemento importante in Excel VBA per la programmazione delle macro e operazioni sulle stringhe. Excel fornisce vari tipi di funzioni di manipolazione delle stringhe VBA come:
- Sinistra: viene utilizzato per esclamaretraccaratteri t dal lato sinistro della stringa
- Diritto: viene utilizzato per esclamaretraccaratteri t dal lato destro della stringa
- Medio: viene utilizzato per esclamaretracuna sottostringa dal centro di una stringa
- Len: viene utilizzato per trovare la lunghezza di una stringa
- Instr: viene utilizzato per trovare la posizione di una sottostringa in una stringa
- Trim: viene utilizzato per rimuovere gli spazi da entrambe le estremità di una stringa
- sostituire: viene utilizzato per scambiare ogni occorrenza di una sottostringa con un'altra
- Custodia a U / Custodia a L: vengono utilizzati per convertire una stringa in maiuscolo o minuscolo
La tabella seguente mostra la sintassi di ciascuna funzione con un esempio pratico, in modo da poter copiare lo schema direttamente in una macro.
| Funzione | Sintassi | Esempio | Uscita |
|---|---|---|---|
| Sinistra | Sinistra(stringa, lunghezza) | Sinistra (“luglio 2015”, 3) | Luglio |
| Diritto | Destra(stringa, lunghezza) | Destra (“luglio 2015”, 4) | 2015 |
| Medio | Mid(stringa, inizio, lunghezza) | Metà (“luglio 2015”, 5, 4) | 2015 |
| Len | Lunghezza(stringa) | Len (luglio 2015) | 8 |
| Instr | InStr(inizio, stringa, sottostringa) | InStr(1, “lug-2015”, “-“) | 4 |
| Trim | Rifinitura (stringa) | Ordinare(" Guru99 “) | Guru99 |
| sostituire | Sostituisci(stringa, trova, sostituisci) | Sostituisci ("Lug-2015", "-", "/") | Lug / 2015 |
| UCase | UCase(stringa) | UCase(“guru99”) | GURU99 |
La macro seguente combina diverse di queste funzioni per ricostruire un'etichetta data a partire dalle sue parti.
Sub StringFunctionsDemo() Dim Source As String Dim MonthPart As String Dim YearPart As String Source = "July-2015" ' Take the first three characters MonthPart = Left(Source, 3) ' Take the last four characters YearPart = Right(Source, 4) MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions" End Sub
L'esecuzione della macro visualizza la data Jul-2015. Ogni funzione restituisce un nuovo valore e lascia inalterata la stringa originale, motivo per cui i risultati possono essere combinati in modo sicuro in un'unica espressione.
Queste funzioni operano tutte su una stringa alla volta. Quando un singolo valore contiene un'intera lista, altre due funzioni lo gestiscono meglio.
Come dividere e unire stringhe in VBA
I dati incollati in Excel spesso arrivano come un unico valore lungo con un separatore tra ogni elemento, ad esempio "Pepsi,Coca-Cola,Fanta,Succo". Leggere questo tipo di dati con le funzioni Mid e InStr è lento e inaffidabile. VBA offre una coppia di funzioni specifiche per questo scopo.
Diviso Prende una stringa delimitata e restituisce un array con indice base zero, con un elemento per ogni elemento. Forum Esegue l'operazione inversa, prendendo un array e restituendo una singola stringa con un separatore tra gli elementi. Si noti che Join funziona su un array, non su due stringhe separate.
Sub SplitAndJoinDemo() Dim Source As String Dim Items() As String Dim i As Long Source = "Pepsi,Coke,Fanta,Juice" ' Break the value into an array on every comma Items = Split(Source, ",") For i = LBound(Items) To UBound(Items) Sheet1.Cells(i + 1, 1).Value = Items(i) Next i ' Rebuild the list with a different separator MsgBox Join(Items, " | "), vbOKOnly, "Joined List" End Sub
Il ciclo scrive ogni bevanda in una riga separata del foglio di lavoro e la finestra di messaggio mostra quindi Pepsi | Coca-Cola | Fanta | Succo. Tre punti rendono questo schema affidabile nel codice di produzione:
- Risultato a base zero: Split restituisce sempre un array numerato a partire da 0, indipendentemente dal valore impostato per Option Base, quindi è consigliabile utilizzare LBound e UBound per guidare il ciclo anziché un numero fisso.
- Dichiara come stringa(): Assegna il risultato a un array di stringhe dinamico. Dichiarare prima una dimensione fissa causa un errore di compilazione.
- Campo vuoto: Dividere una stringa vuota restituisce un array senza elementi, quindi è consigliabile verificare con UBound prima di leggere Items(0).
Anche scegliendo la funzione corretta, il codice per le stringhe fallisce in un numero limitato di modi prevedibili.
Errori comuni nelle stringhe VBA e come risolverli
La maggior parte dei bug relativi alle stringhe in Excel VBA deriva da un breve elenco di cause. Riconoscere il sintomo consente di evitare lunghe sessioni di debug.
- Tipo non corrispondente durante la concatenazione: Tra il testo e il numero è stato utilizzato un segno più. Sostituiscilo con una e commerciale (&), che converte automaticamente il numero.
- InStr restituisce 0: La sottostringa non è stata trovata. InStr restituisce 0 anziché -1 in caso di errore, quindi verifica che il valore sia maggiore di zero prima di passare il risultato a Mid.
- Chiamata di procedura non valida in Mid o Left: La lunghezza richiesta è negativa oppure la posizione iniziale è inferiore a 1. Proteggi la chiamata con Len in modo che la lunghezza non superi mai la stringa.
- Confronti che dovrebbero coincidere ma non coincidono: Gli spazi finali dei dati importati interrompono l'uguaglianza. Racchiudi entrambi i lati in Trim e usa StrComp quando la distinzione tra maiuscole e minuscole deve essere ignorata.
- Testo che non verrà convertito in numero: Un valore come "1,200" non è valido nei calcoli aritmetici a causa del separatore. Rimuovilo con Replace prima di convertirlo con CLng.
Scarica Excel contenente il codice sopra
Scarica il file Excel qui sopra Code



