Deze zelfstudie laat zien hoe u de Mid VBA-functie gebruikt om tekens uit het midden van een tekstreeks te extraheren.
Middenfunctie
Middenfunctie Get n Characters
De VBA Mid-functie retourneert n tekens uit een tekenreeks vanaf positie m:
123456789 | Sub MiddenVoorbeeld_1()MsgBox Mid("ABCDEFGHI", 4, 1) 'Resultaat is: "D"MsgBox Mid("ABCDEFGHI", 4, 2) 'Resultaat is: "DE"MsgBox Mid("ABCDEFGHI", 4, 50) 'Resultaat is: "DEFGHI"MsgBox Mid("ABCDEFG hI", 6, 1) 'Resultaat is: "F"MsgBox Mid("ABCDEFG hI", 6, 2) 'Resultaat is: "FG"MsgBox Mid("ABCDEFG hI", 6, 4) 'Resultaat is: "FG h"Einde sub |
Middenfunctie Krijg n tekens in een variabele
Zoals hierboven weergegeven, kunt u een tekenreeks eenvoudig definiëren door tekst tussen aanhalingstekens in te voeren. Maar de MID-functie werkt ook met stringvariabelen. Deze voorbeelden extraheren n karakters uit een string vanaf positie m.
12345678 | Sub MiddenVoorbeeld_2()Dim StrEx As String 'Definieer een stringvariabele'StrEx = "ABCDEFGHI"MsgBox Mid(StrEx, 2, 1) 'Resultaat is: "B"MsgBox Mid(StrEx, 2, 2) 'Resultaat is: "BC"MsgBox Mid(StrEx, 2, 50) 'Resultaat is: "BCDEFGHI"Einde sub |
Middenfunctie Haal n tekens uit een cel
Strings kunnen worden gedefinieerd in VBA-code, maar u kunt ook waarden uit cellen gebruiken. Lees de waarde van een cel, bewaar deze in een tekenreeksvariabele en extraheer n tekens uit die werkbladcelwaarde vanaf positie m.
1234567891011 | Sub MiddenVoorbeeld_3()Dim StrEx As String 'Definieer een stringvariabele''Lees de waarde van cel A1 in werkblad Blad1'StrEx = ThisWorkbook.Worksheets("Blad1").Bereik("A1").Waarde'Voor dit voorbeeld is de waarde van cel A1 "May the Force be with you"MsgBox Mid(StrEx, 4, 6) 'Resultaat is: " de F" (let op de spatie aan het begin)MsgBox Mid(StrEx, 2, 8) 'Resultaat is: "ay the F"MsgBox Mid(StrEx, 3, 4) 'Resultaat is: "y th"Einde sub |
Middenfunctie Vervang n tekens
In de bovenstaande voorbeelden heeft de functie Mid de oorspronkelijke tekenreeks niet gewijzigd. Het gaf een deel ervan terug, waarbij de originele string intact bleef. Mid Function kan worden gebruikt om tekens in een string te vervangen.
12345678910111213141516171819202122 | Sub MiddenVoorbeeld_4()Dim StrEx As String 'Definieer een stringvariabele'Sub MiddenVoorbeeld_4()Dim StrEx As String 'Definieer een stringvariabele'StrEx = "Moge de Force bij je zijn"Mid(StrEx, 5, 1) = "VWXYZ"MsgBox StrEx 'Resultaat is: "Moge Vhe Horce bij je zijn"'Mid Function vond positie 5 en verving 1 teken in de originele stringStrEx = "Moge de Force bij je zijn"Mid(StrEx, 5, 3) = "VWXYZ"MsgBox StrEx 'Resultaat is: "Moge VWX Horce bij je zijn"'Mid Function vond positie 5 en verving 3 karakters in de originele stringStrEx = "Moge de Force bij je zijn"Mid(StrEx, 5, 8) = "VWXYZ"MsgBox StrEx 'Resultaat is: "Moge VWXYZorce bij je zijn"'Mid Function vond positie 5 en probeerde 8 tekens te vervangen.'"VWXYZ" heeft slechts 5 tekens, dus er zijn slechts 5 tekens vervangen.Einde sub |
Middenfunctie Extraheer tweede woord uit een zin
We kunnen de VBA Mid-functie gebruiken met de VBA Instr-functie om het tweede woord in een tekst te krijgen.
De VBA InStr-functie kan de positie van een teken in de tekst retourneren.
1 | InStr("Twee woorden", " ") 'Resultaat is 4 |
We kunnen InStr gebruiken om de eerste spatie te vinden, daarna kunnen we opnieuw InStr gebruiken om de zoekopdracht na de eerste spatie te starten om de tweede spatie in de tekst te vinden. Ten slotte kunnen we de functie Mid gebruiken om het woord te extraheren omdat we de startpositie van het tweede woord en de lengte ervan kennen (het verschil tussen de posities van de twee spaties).
12345678910111213141516171819202122232425 | Sub MiddenVoorbeeld_5()Dim StrEx As String 'Definieer een stringvariabele'Dim StartPos als geheel getalDim EndPos als geheel getalDim SecondWord als stringStrEx = "James Earl Jones is een acteur"StartPos = InStr(StrEx, " ")'Resultaat is 6'Vind de positie van de eerste spatie'EndPos = InStr(StartPos + 1, StrEx, " ")'Resultaat is 11'Vind de positie van de tweede spatie door na de eerste spatie te zoekenSecondWord = Mid(StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid extraheert de tekens die beginnen na de eerste spatie (StartPos +1)'Mid gebruikt ook de lengte van het tweede woord.'Dat is het verschil tussen spaties posities -1MsgBox SecondWord'Resultaat is Earl'Einde sub |