Denna handledning visar hur du använder Mid VBA -funktionen för att extrahera tecken från mitten av en textsträng.
Mittfunktion
Medelfunktion Get n Characters
VBA Mid -funktionen returnerar n tecken från en sträng som börjar från position m:
123456789 | Sub MidExample_1 ()MsgBox Mid ("ABCDEFGHI", 4, 1) 'Resultat är: "D"MsgBox Mid ("ABCDEFGHI", 4, 2) 'Resultat är: "DE"MsgBox Mid ("ABCDEFGHI", 4, 50) 'Resultat är: "DEFGHI"MsgBox Mid ("ABCDEFG hI", 6, 1) 'Resultatet är: "F"MsgBox Mid ("ABCDEFG hI", 6, 2) 'Resultat är: "FG"MsgBox Mid ("ABCDEFG hI", 6, 4) 'Resultat är: "FG h"Avsluta Sub |
Medelfunktion Få n tecken i en variabel
Som visas ovan kan du definiera en sträng helt enkelt genom att ange text omgiven av citattecken. Men MID -funktionen fungerar också med strängvariabler. Dessa exempel kommer att extrahera n tecken från en sträng som börjar från position m.
12345678 | Sub MidExample_2 ()Dim StrEx As String 'Definiera en strängvariabelStrEx = "ABCDEFGHI"MsgBox Mid (StrEx, 2, 1) 'Resultatet är: "B"MsgBox Mid (StrEx, 2, 2) 'Resultat är: "BC"MsgBox Mid (StrEx, 2, 50) 'Resultat är: "BCDEFGHI"Avsluta Sub |
Medelfunktion Få n tecken från en cell
Strängar kan definieras i VBA -kod men du kan också använda värden från celler. Läs värdet på en cell, behåll den i en strängvariabel och extrahera n tecken från det kalkylbladets cellvärde från position m.
1234567891011 | Sub MidExample_3 ()Dim StrEx As String 'Definiera en strängvariabel'Läs värdet för cell A1 i kalkylblad 1StrEx = ThisWorkbook.Worksheets ("Sheet1"). Område ("A1"). Värde'I detta exempel är värdet för cell A1 "Må kraften vara med dig"MsgBox Mid (StrEx, 4, 6) 'Resultat är: "the F" (Notera utrymmet i början)MsgBox Mid (StrEx, 2, 8) 'Resultatet är: "ay the F"MsgBox Mid (StrEx, 3, 4) 'Resultatet är: "y th"Avsluta Sub |
Mittfunktion Ersätt n tecken
I exemplen ovan ändrade inte Mid -funktionen den ursprungliga strängen. Den returnerade en del av den och lämnade den ursprungliga strängen intakt. Medelfunktion kan användas för att ersätta tecken i en sträng.
12345678910111213141516171819202122 | Sub MidExample_4 ()Dim StrEx As String 'Definiera en strängvariabelSub MidExample_4 ()Dim StrEx As String 'Definiera en strängvariabelStrEx = "Må kraften vara med dig"Mid (StrEx, 5, 1) = "VWXYZ"MsgBox StrEx resultat är: "Må Vhe Horce vara med dig"'Mittfunktionen hittade position 5 och ersatte 1 tecken i den ursprungliga strängenStrEx = "Må kraften vara med dig"Mid (StrEx, 5, 3) = "VWXYZ"MsgBox StrEx resultat är: "Må VWX Horce vara med dig"'Mid Function hittade position 5 och ersatte 3 tecken i den ursprungliga strängenStrEx = "Må kraften vara med dig"Mid (StrEx, 5, 8) = "VWXYZ"MsgBox StrEx resultat är: "Må VWXYZorce vara med dig"'Mid Function hittade position 5 och försökte ersätta 8 tecken."" VWXYZ "har bara 5 tecken, så bara 5 tecken ersattes.Avsluta Sub |
Medelfunktion Extrahera andra ordet från en fras
Vi kan använda VBA Mid -funktion med VBA Instr -funktion för att få det andra ordet i en text.
VBA InStr -funktionen kan returnera positionen för ett tecken inuti texten.
1 | InStr ("Två ord", "") 'Resultat är 4 |
Vi kan använda InStr för att hitta det första utrymmet, sedan kan vi använda InStr igen för att starta sökningen efter det första utrymmet för att hitta det andra utrymmet i texten. Slutligen kan vi använda Mid -funktionen för att extrahera ordet eftersom vi känner till det andra ordets startposition och dess längd (skillnaden mellan de två mellanslagspositionerna).
12345678910111213141516171819202122232425 | Sub MidExample_5 ()Dim StrEx As String 'Definiera en strängvariabelDim StartPos som heltalDim EndPos som heltalDim SecondWord som strängStrEx = "James Earl Jones är en skådespelare"StartPos = InStr (StrEx, "")'Resultatet är 6'Hitta positionen för det första utrymmetEndPos = InStr (StartPos + 1, StrEx, "")'Resultatet är 11'Hitta positionen för det andra utrymmet genom att starta sökningen efter det första utrymmetSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid extraherar tecknen som börjar efter det första blanksteget (StartPos +1)'Mid använder också längden på det andra ordet.'Det är skillnaden mellan blankstegspositioner -1MsgBox SecondWord'Resultatet är EarlAvsluta Sub |