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.

  • 🔤 Strengdata: En verdi bygget opp av tegn, symboler og tall, for eksempel teksten Jul-2015.
  • sammenkjeding Operator: &-tegnet forbinder to strenger, så «John» og «Doe» returnerer John Doe.
  • ✂️ ExtracFunksjoner: Venstre, Høyre og Midt trekker en delstreng fra starten, slutten eller midten av en verdi.
  • 📏 Målefunksjoner: Len teller tegn og InStr returnerer posisjonen der en delstreng begynner.
  • 🧩 Splitt og bli med: Split deler én avgrenset streng inn i en matrise, og Join gjenoppbygger en matrise til én enkelt streng.
  • ⚠️ Vanlige feil: Typeavvik, InStr som returnerer null og etterfølgende mellomrom forårsaker de fleste mislykkede sammenligninger.

VBA-strengmanipuleringsfunksjoner og Operatorer

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

VBA-streng Operators Eksempelkilde Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

Utførelse av koden ovenfor gir følgende resultat

VBA-streng Operators Eksempelkilde Code

&-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

Spørsmål og svar

En streng med variabel lengde kan inneholde opptil omtrent to milliarder tegn, og en streng med fast lengde kan inneholde opptil 65 400. En regnearkcelle lagrer imidlertid bare 32 767 tegn, så lengre verdier blir avkortet når de skrives til et ark.

Likhetstegnet sammenligner dem som standard med skille mellom store og små bokstaver. Bruk StrComp(a, b, vbTextCompare) for et resultat som ikke skiller mellom store og små bokstaver, eller plasser Option Compare Text øverst i modulen for å endre standardinnstillingen for hele modulen.

&-tegnet konverterer hver operand til tekst før den slås sammen, så 10 og 5 returnerer strengen 105. Behold verdiene numeriske og legg dem sammen først, og slå deretter sammen resultatet hvis det må vises i en melding.

Ja. Beskriv inngangen og ønsket utgang, for eksempeltract koden før den første bindestreken, og en AI-assistent returnerer et Left- og InStr-uttrykk. Test det mot kanttilfeller som en manglende bindestrek.

Ja. Lim inn et nestet uttrykk som Mid med InStr inni, så deler en AI-assistent det opp i trinn, navngir hvert argument og flagger tilfellet der InStr returnerer null og kallet mislykkes.

Oppsummer dette innlegget med: