Questo tutorial dimostrerà come utilizzare la funzione Mid VBA per estrarre i caratteri dal centro di una stringa di testo.
Funzione media
Funzione intermedia Ottieni n caratteri
La funzione VBA Mid restituisce n caratteri da una stringa a partire dalla posizione m:
123456789 | Sub MidEsempio_1()MsgBox Mid("ABCDEFGHI", 4, 1) 'Il risultato è: "D"MsgBox Mid("ABCDEFGHI", 4, 2) 'Il risultato è: "DE"MsgBox Mid("ABCDEFGHI", 4, 50) 'Il risultato è: "DEFGHI"MsgBox Mid("ABCDEFG hI", 6, 1) 'Il risultato è: "F"MsgBox Mid("ABCDEFG hI", 6, 2) 'Il risultato è: "FG"MsgBox Mid("ABCDEFG hI", 6, 4) 'Il risultato è: "FG h"Fine sottotitolo |
Mid Function Ottieni n caratteri in una variabile
Come mostrato sopra, puoi definire una stringa semplicemente inserendo del testo racchiuso tra virgolette. Ma la funzione MID funzionerà anche con variabili stringa. Questi esempi estrarranno n caratteri da una stringa a partire dalla posizione m.
12345678 | Sub MidEsempio_2()Dim StrEx As String 'Definisci una variabile stringaStrEx = "ABCDEFGHI"MsgBox Mid(StrEx, 2, 1) 'Il risultato è: "B"MsgBox Mid(StrEx, 2, 2) 'Il risultato è: "BC"MsgBox Mid(StrEx, 2, 50) 'Il risultato è: "BCDEFGHI"Fine sottotitolo |
Mid Function Ottieni n caratteri da una cella
Le stringhe possono essere definite nel codice VBA ma puoi anche utilizzare i valori delle celle. Leggi il valore di una cella, mantienilo in una variabile stringa ed estrai n caratteri dal valore della cella del foglio di lavoro a partire dalla posizione m.
1234567891011 | Sub MidEsempio_3()Dim StrEx As String 'Definisci una variabile stringa'Leggi il valore della cella A1 nel foglio di lavoro Foglio1StrEx = ThisWorkbook.Worksheets("Foglio1").Intervallo("A1").Valore'Per questo esempio il valore della cella A1 è "Che la Forza sia con te"MsgBox Mid(StrEx, 4, 6) 'Il risultato è: " la F" (notare lo spazio all'inizio)MsgBox Mid(StrEx, 2, 8) 'Il risultato è: "ay the F"MsgBox Mid(StrEx, 3, 4) 'Il risultato è: "y th"Fine sottotitolo |
Funzione centrale Sostituisci n caratteri
Negli esempi sopra, la funzione Mid non ha modificato la stringa originale. Ne ha restituito una parte, lasciando intatta la stringa originale. La funzione Mid può essere utilizzata per sostituire i caratteri in una stringa.
12345678910111213141516171819202122 | Sub MidEsempio_4()Dim StrEx As String 'Definisci una variabile stringaSub MidEsempio_4()Dim StrEx As String 'Definisci una variabile stringaStrEx = "Che la Forza sia con te"Mid(StrEx, 5, 1) = "VWXYZ"MsgBox StrEx 'Il risultato è: "Che Vhe Horce sia con te""Mid Function ha trovato la posizione 5 e ha sostituito 1 carattere nella stringa originale"StrEx = "Che la Forza sia con te"Mid(StrEx, 5, 3) = "VWXYZ"MsgBox StrEx 'Il risultato è: "Che VWX Horce sia con te""Mid Function ha trovato la posizione 5 e ha sostituito 3 caratteri nella stringa originale"StrEx = "Che la Forza sia con te"Mid(StrEx, 5, 8) = "VWXYZ"MsgBox StrEx 'Il risultato è: "Che VWXYZorce sia con te"'Mid Function ha trovato la posizione 5 e ha provato a sostituire 8 caratteri.'"VWXYZ" ha solo 5 caratteri, quindi solo 5 caratteri sono stati sostituiti.Fine sottotitolo |
Mid Function Estrai la seconda parola da una frase
Possiamo usare la funzione VBA Mid con la funzione VBA Instr per ottenere la seconda parola in un testo.
La funzione VBA InStr può restituire la posizione di un carattere all'interno del testo.
1 | InStr("Due parole", " ") 'Il risultato è 4 |
Possiamo usare InStr per trovare il primo spazio, quindi possiamo usare nuovamente InStr iniziando la ricerca dopo il primo spazio per trovare il secondo spazio nel testo. Infine, possiamo usare la funzione Mid per estrarre la parola perché conosciamo la posizione iniziale della seconda parola e la sua lunghezza (la differenza tra le posizioni dei due spazi).
12345678910111213141516171819202122232425 | Sub MidEsempio_5()Dim StrEx As String 'Definisci una variabile stringaDim StartPos As IntegerDim EndPos As IntegerDim SecondWord As StringStrEx = "James Earl Jones è un attore"StartPos = InStr(StrEx, " ")'Il risultato è 6'Trova la posizione del primo spazioEndPos = InStr(StartPos + 1, StrEx, " ")"Il risultato è 11"'Trova la posizione del secondo spazio avviando la ricerca dopo il primo spazioSecondWord = Mid(StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid estrae i caratteri che iniziano dopo il primo spazio (StartPos +1)'Mid usa anche la lunghezza della seconda parola.'Questa è la differenza tra le posizioni degli spazi -1MsgBox SecondWord"Il risultato è Earl"Fine sottotitolo |