Denne opplæringen vil demonstrere hvordan du bruker Mid VBA -funksjonen til å trekke ut tegn fra midten av en tekststreng.
Midtfunksjon
Midtfunksjon Få n tegn
VBA Mid -funksjonen returnerer n tegn fra en streng som starter fra posisjon m:
123456789 | Sub MidExample_1 ()MsgBox Mid ("ABCDEFGHI", 4, 1) 'Resultat er: "D"MsgBox Mid ("ABCDEFGHI", 4, 2) 'Resultat er: "DE"MsgBox Mid ("ABCDEFGHI", 4, 50) 'Resultat er: "DEFGHI"MsgBox Mid ("ABCDEFG hI", 6, 1) 'Resultat er: "F"MsgBox Mid ("ABCDEFG hI", 6, 2) 'Resultat er: "FG"MsgBox Mid ("ABCDEFG hI", 6, 4) 'Resultat er: "FG h"Slutt Sub |
Midtfunksjon Få n tegn i en variabel
Som vist ovenfor kan du definere en streng ved å skrive inn tekst omgitt av anførselstegn. Men MID -funksjonen vil også fungere med strengvariabler. Disse eksemplene vil trekke ut n tegn fra en streng som starter fra posisjon m.
12345678 | Sub MidExample_2 ()Dim StrEx As String 'Definer en strengvariabelStrEx = "ABCDEFGHI"MsgBox Mid (StrEx, 2, 1) 'Resultat er: "B"MsgBox Mid (StrEx, 2, 2) 'Resultat er: "BC"MsgBox Mid (StrEx, 2, 50) 'Resultat er: "BCDEFGHI"Slutt Sub |
Midtfunksjon Få n tegn fra en celle
Strenger kan defineres i VBA -kode, men du kan også bruke verdier fra celler. Les verdien av en celle, behold den i en strengvariabel, og trekk ut n tegn fra denne regnearkcelleverdien fra posisjon m.
1234567891011 | Sub MidExample_3 ()Dim StrEx As String 'Definer en strengvariabel'Les verdien av celle A1 i regnearkark1StrEx = ThisWorkbook.Worksheets ("Sheet1"). Område ("A1"). Verdi'For dette eksemplet er verdien av celle A1 "Må kraften være med deg"MsgBox Mid (StrEx, 4, 6) 'Resultat er: "the F" (Legg merke til mellomrommet i starten)MsgBox Mid (StrEx, 2, 8) 'Resultat er: "ay the F"MsgBox Mid (StrEx, 3, 4) 'Resultat er: "y th"Slutt Sub |
Midtfunksjon Erstatt n tegn
I eksemplene ovenfor endret ikke Mid -funksjonen den opprinnelige strengen. Den returnerte en del av den, og etterlot den originale strengen intakt. Mid Funksjon kan brukes til å erstatte tegn i en streng.
12345678910111213141516171819202122 | Sub Mid -eksempel_4 ()Dim StrEx As String 'Definer en strengvariabelSub Mid -eksempel_4 ()Dim StrEx As String 'Definer en strengvariabelStrEx = "Må kraften være med deg"Midt (StrEx, 5, 1) = "VWXYZ"MsgBox StrEx 'resultat er: "May Vhe Horce be with you"Midtfunksjonen fant posisjon 5 og erstattet 1 tegn i den originale strengenStrEx = "Må kraften være med deg"Midt (StrEx, 5, 3) = "VWXYZ"MsgBox StrEx 'resultat er: "Må VWX Horce være med deg"'Mid Funksjon fant posisjon 5 og erstattet 3 tegn i den originale strengenStrEx = "Må kraften være med deg"Midt (StrEx, 5, 8) = "VWXYZ"MsgBox StrEx 'resultat er: "Må VWXYZorce være med deg"Midtfunksjonen fant posisjon 5 og prøvde å erstatte 8 tegn.'"VWXYZ" har bare 5 tegn, så bare 5 tegn ble erstattet.Slutt Sub |
Midfunksjon Ekstraher andre ordet fra en setning
Vi kan bruke VBA Mid -funksjon med VBA Instr -funksjon for å få det andre ordet i en tekst.
VBA InStr -funksjonen kan returnere posisjonen til et tegn inne i teksten.
1 | InStr ("To ord", "") 'Resultat er 4 |
Vi kan bruke InStr til å finne det første rommet, så kan vi bruke InStr igjen for å starte søket etter det første mellomrommet for å finne det andre rommet i teksten. Til slutt kan vi bruke Mid -funksjonen til å trekke ut ordet fordi vi kjenner startposisjonen til det andre ordet og dets lengde (forskjellen mellom de to mellomromsposisjonene).
12345678910111213141516171819202122232425 | Sub MidExample_5 ()Dim StrEx As String 'Definer en strengvariabelDim StartPos som heltallDim EndPos som heltallDim SecondWord As StringStrEx = "James Earl Jones er en skuespiller"StartPos = InStr (StrEx, "")'Resultatet er 6'Finn posisjonen til det første rommetEndPos = InStr (StartPos + 1, StrEx, "")'Resultatet er 11'Finn posisjonen til det andre mellomrommet ved å starte søket etter det første mellomrommetSecondWord = Midt (StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid trekker ut tegnene som begynner etter det første mellomrommet (StartPos +1)'Mid bruker også lengden på det andre ordet.'Det er forskjellen mellom mellomromsposisjoner -1MsgBox SecondWord'Resultatet er EarlSlutt Sub |