VBA-strengmanipulationsfunktioner og Operatorer

⚡ Smart opsummering

VBA-strengmanipulationsfunktioner og Operatorer kombinerer, måler og extract-tekst i Excel-makroer. Denne side forklarer sammenkædningsoperatoren, funktionerne Left, Right, Mid, Len og InStr, opdeling og sammenføjning samt de fejl, der oftest ødelægger strengkode.

  • 🔤 Strengdata: En værdi bygget op af tegn, symboler og tal, såsom teksten Jul-2015.
  • sammenkædning Operator: Og-tegnet forbinder to strenge, så "John" og "Doe" returnerer John Doe.
  • ✂️ ExtracFunktioner: Venstre, Højre og Midterste trækker en delstreng fra starten, slutningen eller midten af ​​en værdi.
  • 📏 Målefunktioner: Len tæller tegn, og InStr returnerer den position, hvor en delstreng begynder.
  • 🧩 Opdel og tilslut dig: Split opdeler en afgrænset streng i et array, og Join genopbygger et array til en enkelt streng.
  • ⚠️ Almindelige fejl: Typeuoverensstemmelse, InStr der returnerer nul, og efterfølgende mellemrum forårsager de fleste mislykkede sammenligninger.

VBA-strengmanipulationsfunktioner og Operatorer

VBA streng Operatorer

Strengdata bruges til at opbevare data, der består af tal, tegn og symboler. "Jul-2015" er et eksempel på en strengdata. Den består af

  • Karakterer (jul)
  • Symbol (-)
  • Numbers (2015)

Strengoperatorer bruges til at manipulere strengdata. For eksempel kan du sammenkæde værdien af ​​juli-2015 fra de første 3 bogstaver i måneden og året som "Jul-2015".

Følgende tabel viser sammenkædnings-VBA-strengoperatoren.

S / N OperaTor Beskrivelse Eksempel Produktion
1 & Sammenkædning: Denne operator bruges til at sammenkæde strenge "John" & "Doe" John Doe

Eksempelkilde Code

VBA streng Operators Eksempel Kilde Code

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

Udførelse af ovenstående kode giver følgende resultat

VBA streng Operators Eksempel Kilde Code

Et-tegnet er ikke det eneste symbol, der synes at forbinde tekst, og forskellen mellem de to betyder noget, når der er tale om tal.

Forskellen mellem & og + for strengsammenkædning

VBA accepterer både ampersand-tegnet og plustegnet mellem to tekstværdier, så begyndere behandler dem ofte som udskiftelige. De opfører sig forskelligt, så snart en operand er et tal eller en tom værdi, og kun én af dem er sikker.

Adfærd & (Ampersand) + (Plus)
To tekstværdier Slutter sig til dem: “Guru"& "99" returnerer Guru99 Slutter sig til dem: “Guru" + "99" returnerer Guru99
Tekst og et nummer Konverterer tallet til tekst: “Alder” & 30 returnerer Alder 30 Giver en fejl med typeuoverensstemmelse
To numeriske strenge "10" og "5" returnerer 105 "10" + "5" kan lægge sammen og returnere 15
En nulværdi Behandler Null som en tom streng Returnerer Null og kasserer hele resultatet

💡 Tip: Brug altid og-tegnet til sammenkædning og reserver plustegnet til aritmetiske operationerSæt et mellemrum før og efter og-tegnet, fordi skrivning af Total& læses af VBA som et langt deklarationstegn.

VBA-strengmanipulationsfunktioner

VBA String Manipulation er et vigtigt element i Excel VBA til makroprogrammering og strengoperationer. Excel tilbyder forskellige typer af VBA String Manipulation-funktioner som:

  • Venstrebruges til f.eks.tract tegn fra venstre side af strengen
  • Højrebruges til f.eks.tract tegn fra højre side af strengen
  • Midbruges til f.eks.tracen delstreng fra midten af ​​en streng
  • Len: bruges til at finde længden af ​​en streng
  • InStr: bruges til at finde positionen af ​​en understreng i en streng
  • Trimmebruges til at fjerne mellemrum fra begge ender af en streng
  • udskiftebruges til at bytte alle forekomster af en delstreng ud med en anden
  • UCase / LCasebruges til at konvertere en streng til store eller små bogstaver

Tabellen nedenfor viser syntaksen for hver funktion med et udtænkt eksempel, så du kan kopiere mønsteret direkte ind i en makro.

Funktion Syntaks Eksempel Produktion
Venstre Venstre(streng, længde) Venstre(“Jul-2015”, 3) juli
Højre Højre(streng, længde) Højre(“Jul-2015”, 4) 2015
Mid Midt(streng, start, længde) Midt ("juli-2015", 5, 4) 2015
Len Længde(streng) Len(“Juli-2015”) 8
InStr InStr(start, streng, delstreng) InStr(1, "Jul-2015", "-") 4
Trimme Trim(streng) Trim(” Guru99") Guru99
udskifte Erstat(streng, find, erstat) Erstat(“Jul-2015”, “-“, “/”) juli/2015
UCase UCase(streng) UCase("guru99") GURU99

Makroen nedenfor kombinerer flere af disse funktioner for at genopbygge en datomærkat fra dens dele.

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

Kørsel af makroen viser juli 2015. Hver funktion returnerer en ny værdi og lader den oprindelige streng være uberørt, hvilket er grunden til, at resultaterne sikkert kan kombineres i et enkelt udtryk.

Disse funktioner arbejder alle på én streng ad gangen. Når en enkelt værdi indeholder en hel liste, håndterer to andre funktioner det bedre.

Sådan opdeler og forbinder du strenge i VBA

Data indsat i Excel ankommer ofte som én lang værdi med en separator mellem hvert element, f.eks. "Pepsi, Coke, Fanta, Juice". Det er langsomt og skrøbeligt at læse det med Mid og InStr. VBA leverer et matchende par af funktioner til præcis dette job.

Dele tager en afgrænset streng og returnerer et nulbaseret array med ét element pr. element. Bliv Medlem gør det omvendte, tager et array og returnerer en enkelt streng med en separator mellem elementerne. Bemærk at Join fungerer på et array, ikke på to separate strenge.

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 ind i sin egen række i regnearket, og meddelelsesboksen viser derefter Pepsi | Coca-Cola | Fanta | Juice. Tre punkter gør dette mønster pålideligt i produktionskode:

  • Nulbaseret resultat: Split returnerer altid et array nummereret fra 0, uanset hvilken Option Base er indstillet til, så kør løkken med LBound og UBound i stedet for et fast tal.
  • Deklarer som String(): Tildel resultatet til et dynamisk String-array. Deklarering af en fast størrelse først forårsager en kompileringsfejl.
  • Tom indtastning: Opdeling af en tom streng returnerer et array uden elementer, så test med UBound før du læser Items(0).

Selv med den korrekte funktion valgt, fejler strengkode på et lille antal forudsigelige måder.

Almindelige VBA-strengfejl og hvordan man retter dem

De fleste strengfejl i Excel VBA stammer fra en kort liste af årsager. At genkende symptomet sparer en lang fejlfindingssession.

  • Typeuoverensstemmelse ved sammenkædning: Der blev brugt et plustegn mellem tekst og et tal. Erstat det med et og-tegn, som konverterer tallet automatisk.
  • InStr returnerer 0: Delstrengen blev ikke fundet. InStr returnerer 0 i stedet for -1 ved fejl, så test for en værdi større end nul, før resultatet sendes til Mid.
  • Ugyldigt procedurekald i Mid eller Left: Den ønskede længde er negativ, eller startpositionen er under 1. Beskyt kaldet med Len, så længden aldrig overstiger strengen.
  • Sammenligninger, der burde stemme overens, men ikke gør det: Efterfølgende mellemrum fra importerede data bryder ligheden. Ombryd begge sider i Trim, og brug StrComp, når store og små bogstaver skal ignoreres.
  • Tekst der ikke bliver til et tal: En værdi som "1,200" fejler i aritmetik på grund af separatoren. Fjern den med Replace, før du konverterer med CLng.

Download Excel, der indeholder ovenstående kode

Download ovenstående Excel-fil Code

Ofte Stillede Spørgsmål

En streng med variabel længde kan indeholde op til cirka to milliarder tegn, og en streng med fast længde kan indeholde op til 65,400. En regnearkscelle indeholder dog kun 32,767 tegn, så længere værdier afkortes, når de skrives til et ark.

Lighedstegnet sammenligner dem som standard med forskel på store og små bogstaver. Brug StrComp(a, b, vbTextCompare) for et resultat, der ikke skelner mellem store og små bogstaver, eller placer Option Compare Text øverst i modulet for at ændre standardværdien for hele modulet.

Ampersand-tegnet konverterer hver operand til tekst før den sammenføjes, så 10 & 5 returnerer strengen 105. Behold værdierne numeriske, og læg dem sammen først. Sammenkæd derefter resultatet, hvis det skal vises i en besked.

Ja. Beskriv input og det ønskede output, for eksempeltracUdfør koden før den første bindestreg, og en AI-assistent returnerer et Left- og InStr-udtryk. Test det mod kanttilfælde såsom en manglende bindestreg.

Ja. Indsæt et indbygget udtryk som Mid med InStr indeni, og en AI-assistent opdeler det i trin, navngiver hvert argument og markerer det tilfælde, hvor InStr returnerer nul, og kaldet mislykkes.

Opsummer dette indlæg med: