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.

  • ๐Ÿ”ค Dati stringa: Un valore composto da caratteri, simboli e numeri, come ad esempio il testo Jul-2015.
  • โž• Concatenazione Operare: La e commerciale unisce due stringhe, quindi "John " & "Doe" restituisce John Doe.
  • โœ‚๏ธ ExtracFunzioni di zione: Le opzioni Left, Right e Mid estraggono una sottostringa dall'inizio, dalla fine o dal centro di un valore.
  • ๐Ÿ“ Funzioni di misura: Len conta i caratteri e InStr restituisce la posizione in cui inizia una sottostringa.
  • ๐Ÿงฉ Dividi e unisci: Split suddivide una stringa delimitata in un array, mentre Join ricostruisce un array in un'unica stringa.
  • โš ๏ธ Errori comuni: La maggior parte dei confronti falliti รจ causata da tipi non corrispondenti, InStr che restituisce zero e spazi finali.

Funzioni di manipolazione delle stringhe VBA e OperaTors

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

Stringa VBA OperaEsempio di fonte Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

L'esecuzione del codice sopra riportato produce il seguente risultato

Stringa VBA OperaEsempio di fonte Code

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

DOMANDE FREQUENTI

Una stringa a lunghezza variabile puรฒ contenere fino a circa due miliardi di caratteri, mentre una stringa a lunghezza fissa ne puรฒ contenere fino a 65,400. Una cella di un foglio di calcolo, tuttavia, puรฒ memorizzare solo 32,767 caratteri, quindi i valori piรน lunghi vengono troncati quando vengono scritti sul foglio.

Il segno di uguale confronta le stringhe distinguendo tra maiuscole e minuscole per impostazione predefinita. Utilizzare StrComp(a, b, vbTextCompare) per un risultato che non distingua tra maiuscole e minuscole, oppure posizionare Option Compare Text all'inizio del modulo per modificare l'impostazione predefinita per l'intero modulo.

La e commerciale converte ogni operando in testo prima di unire i valori, quindi 10 & 5 restituisce la stringa 105. Mantieni i valori numerici e sommali prima, poi concatena il risultato se deve apparire all'interno di un messaggio.

Sรฌ. Descrivi l'input e l'output desiderato, ad esempio es.tracInserisci il codice prima del primo trattino e un assistente IA restituirร  un'espressione Left e InStr. Testala rispetto a casi limite come un trattino mancante.

Sรฌ. Incolla un'espressione annidata come Mid con InStr al suo interno e un assistente IA la scompone in passaggi, assegna un nome a ciascun argomento e segnala il caso in cui InStr restituisce zero e la chiamata fallisce.

Riassumi questo post con: