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


