VBA-strengmanipulasjonsfunksjoner og Operatorer
⚡ Smart oppsummering
VBA-strengmanipuleringsfunksjoner og Operatorer kombinerer, måler og ekskluderertract-tekst i Excel-makroer. Denne siden forklarer sammenkoblingsoperatoren, funksjonene Left, Right, Mid, Len og InStr, deling og sammenføyning, og feilene som oftest ødelegger strengkoden.
VBA-streng Operatorer
Strengdata brukes til å holde data som består av tall, tegn og symboler. "Jul-2015" er et eksempel på en strengdata. Den består av
- Karakterer (jul)
- Symbol (-)
- Numbers (2015)
Strengeoperatorer brukes til å manipulere strengdata. Du kan for eksempel sette sammen verdien av juli-2015 fra de tre første bokstavene i måneden og året som "Jul-3".
Følgende tabell viser sammenkoblings-VBA-strengoperatoren.
| S / N | Operator | Tekniske beskrivelser | Eksempel | Produksjon |
|---|---|---|---|---|
| 1 | & | Konkatener: Denne operatoren brukes til å sette sammen strenger | «John» og «Doe» | John Doe |
Eksempelkilde Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Utførelse av koden ovenfor gir følgende resultat
&-tegnet er ikke det eneste symbolet som ser ut til å bli med i tekst, og forskjellen mellom de to spiller en rolle når tall er involvert.
Forskjellen mellom & og + for strengsammenkobling
VBA aksepterer både og-tegnet og plusstegnet mellom to tekstverdier, så nybegynnere behandler dem ofte som utskiftbare. De oppfører seg annerledes så snart én operand er et tall eller en tom verdi, og bare én av dem er trygg.
| Atferd | & (og-tegnet) | + (pluss) |
|---|---|---|
| To tekstverdier | Blir med dem: «Guru«&» returnerer Guru99 | Blir med dem: «Guru«+ «99» returnerer Guru99 |
| Tekst og et tall | Konverterer tallet til tekst: «Alder» og 30 returnerer Alder 30 | Oppstår en feilmelding om typeavvik |
| To numeriske strenger | «10» og «5» returnerer 105 | «10» + «5» kan legge sammen og returnere 15 |
| En nullverdi | Behandler Null som en tom streng | Returnerer null og forkaster hele resultatet |
💡 Tips: Bruk alltid og-tegnet for sammenkobling og reserver plusstegnet for aritmetiske operasjonerSett inn et mellomrom før og etter og-tegnet, fordi skriving av Total& leses av VBA som et Long-deklarasjonstegn.
VBA-strengmanipulasjonsfunksjoner
VBA String Manipulation er et viktig element i Excel VBA for makroprogrammering og strengoperasjoner. Excel tilbyr ulike typer VBA-strengmanipulasjonsfunksjoner som:
- Venstrebrukes til f.eks.tract tegn fra venstre side av strengen
- Ikke santbrukes til f.eks.tract tegn fra høyre side av strengen
- Midbrukes til f.eks.tracen delstreng fra midten av en streng
- Len: brukes til å finne lengden på en streng
- InStr: brukes til å finne posisjonen til en delstreng i en streng
- Trimbrukes til å fjerne mellomrom fra begge ender av en streng
- Erstattbrukes til å bytte ut hver forekomst av én delstreng med en annen
- UCase / LCasebrukes til å konvertere en streng til store eller små bokstaver
Tabellen nedenfor viser syntaksen for hver funksjon med et utarbeidet eksempel, slik at du kan kopiere mønsteret direkte inn i en makro.
| Funksjon | syntax | Eksempel | Produksjon |
|---|---|---|---|
| Venstre | Venstre(streng, lengde) | Venstre(«juli-2015», 3) | Jul |
| Ikke sant | Høyre(streng, lengde) | Høyre(«juli-2015», 4) | 2015 |
| Mid | Midt(streng, start, lengde) | Midt («juli 2015», 5, 4) | 2015 |
| Len | Lenge(streng) | Len («juli 2015») | 8 |
| InStr | InStr(start, streng, delstreng) | InStr(1, "Jul-2015", "-") | 4 |
| Trim | Trim(streng) | Trim(” Guru99”) | Guru99 |
| Erstatt | Erstatt(streng, finn, erstatt) | Erstatt(“Jul-2015”, “-“, “/”) | Jul / 2015 |
| UCase | UCase(streng) | UCase("guru99") | GURU99 |
Makroen nedenfor kombinerer flere av disse funksjonene for å gjenoppbygge en datoetikett fra delene.
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
Når makroen kjøres, vises juli 2015. Hver funksjon returnerer en ny verdi og lar den opprinnelige strengen være urørt, og det er derfor resultatene trygt kan kombineres i ett enkelt uttrykk.
Disse funksjonene fungerer alle på én streng om gangen. Når én enkelt verdi inneholder en hel liste, håndterer to andre funksjoner den bedre.
Slik deler og kobler du sammen strenger i VBA
Data som limes inn i Excel kommer ofte som én lang verdi med et skilletegn mellom hvert element, for eksempel «Pepsi, Coke, Fanta, Juice». Det er tregt og skjørt å lese dette med Mid og InStr. VBA tilbyr et matchende par med funksjoner for akkurat denne jobben.
Dele tar en avgrenset streng og returnerer en nullbasert array, med ett element per element. Bli med gjør det motsatte, tar en array og returnerer en enkelt streng med et skilletegn mellom elementene. Merk at Join fungerer på en array, ikke på to separate strenger.
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
Løkken skriver hver drink inn i sin egen regnearksrad, og meldingsboksen viser deretter Pepsi | Coca-Cola | Fanta | Juice. Tre punkter gjør dette mønsteret pålitelig i produksjonskode:
- Nullbasert resultat: Split returnerer alltid en matrise nummerert fra 0, uansett hva Option Base er satt til, så kjør løkken med LBound og UBound i stedet for et fast tall.
- Deklarer som streng(): Tilordne resultatet til en dynamisk strengmatrise. Hvis en fast størrelse deklareres først, forårsaker det en kompileringsfeil.
- Tom inndata: Å dele en tom streng returnerer en matrise uten elementer, så test med UBound før du leser Items(0).
Selv med riktig funksjon valgt, feiler strengkode på et lite antall forutsigbare måter.
Vanlige VBA-strengfeil og hvordan du fikser dem
De fleste strengfeil i Excel VBA kommer fra en kort liste over årsaker. Å gjenkjenne symptomet sparer en lang feilsøkingsøkt.
- Typeavvik ved sammenkobling: Et plusstegn ble brukt mellom tekst og et tall. Erstatt det med et &-tegn, som konverterer tallet automatisk.
- InStr returnerer 0: Delstrengen ble ikke funnet. InStr returnerer 0 i stedet for -1 ved feil, så test for en verdi større enn null før du sender resultatet til Mid.
- Ugyldig prosedyrekall i Midt eller Venstre: Den forespurte lengden er negativ, eller startposisjonen er under 1. Beskytt kallet med Len slik at lengden aldri overstiger strengen.
- Sammenligninger som burde samsvare, men ikke samsvarer: Etterfølgende mellomrom fra importerte data bryter likheten. Bryt begge sider i Trim, og bruk StrComp når store og små bokstaver skal ignoreres.
- Tekst som ikke blir til et tall: En verdi som «1,200» mislykkes i aritmetikk på grunn av skilletegnet. Fjern den med Erstatt før du konverterer med CLng.
Last ned Excel som inneholder koden ovenfor
Last ned Excel-filen ovenfor Code



