VBA String Manipulation Functions & Operatorer

โšก Smart sammanfattning

VBA-strรคngmanipuleringsfunktioner och Operatorer kombinerar, mรคter och extract-text inuti Excel-makron. Den hรคr sidan fรถrklarar sammanfogningsoperatorn, funktionerna Left, Right, Mid, Len och InStr, delning och koppling, och de fel som oftast orsakar strรคngkodsfel.

  • ๐Ÿ”ค Strรคngdata: Ett vรคrde som รคr byggt av tecken, symboler och siffror, till exempel texten Jul-2015.
  • โž• sammanlรคnkning Operator: Et-tecknet fรถrbinder tvรฅ strรคngar, sรฅ โ€Johnโ€ och โ€Doeโ€ returnerar John Doe.
  • โœ‚๏ธ ExtracFunktioner: Vรคnster, Hรถger och Mitten hรคmtar en delstrรคng frรฅn bรถrjan, slutet eller mitten av ett vรคrde.
  • ๐Ÿ“ Mรคtfunktioner: Len rรคknar tecken och InStr returnerar positionen dรคr en delstrรคng bรถrjar.
  • ๐Ÿงฉ Dela och gรฅ med: Split bryter upp en avgrรคnsad strรคng till en array, och Join bygger om en array till en enda strรคng.
  • โš ๏ธ Vanliga fel: Typfelmatchning, InStr som returnerar noll och efterfรถljande mellanslag orsakar de flesta misslyckade jรคmfรถrelser.

VBA-strรคngmanipuleringsfunktioner och Operatorer

VBA-strรคng Operatorer

Strรคngdata anvรคnds fรถr att hรฅlla data som bestรฅr av siffror, tecken och symboler. "Jul-2015" รคr ett exempel pรฅ en strรคngdata. Den bestรฅr av

  • Karaktรคrer (jul)
  • Symbol (-)
  • Numbers Lagring

Strรคngoperatorer anvรคnds fรถr att manipulera strรคngdata. Du kan till exempel sammanfoga vรคrdet fรถr juli-2015 frรฅn de tre fรถrsta bokstรคverna i mรฅnaden och รฅret som "Jul-3".

Fรถljande tabell visar sammanlรคnknings-VBA-strรคngoperatorn.

S / N Operator BESKRIVNING Exempelvis Produktion
1 & Sammanfoga: Denna operator anvรคnds fรถr att sammanfoga strรคngar "John" & "Doe" Per Andersson

Exempelkรคlla Code

VBA-strรคng Operators Exempelkรคlla Code

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

Att kรถra ovanstรฅende kod ger fรถljande resultat

VBA-strรคng Operators Exempelkรคlla Code

Et-tecknet รคr inte den enda symbolen som fรถrekommer i text, och skillnaden mellan de tvรฅ spelar roll nรคr siffror รคr inblandade.

Skillnaden mellan & och + fรถr strรคngsammanfogning

VBA accepterar bรฅde et-tecknet och plustecknet mellan tvรฅ textvรคrden, sรฅ nybรถrjare behandlar dem ofta som utbytbara. De beter sig olika sรฅ snart en operand รคr ett tal eller ett tomt vรคrde, och bara ett av dem รคr sรคkert.

Beteende & (Ampersand) + (Plus)
Tvรฅ textvรคrden Ansluter sig till dem: "Guruโ€ & โ€99โ€ returnerar Guru99 Ansluter sig till dem: "Guruโ€ + โ€99โ€ returnerar Guru99
Text och ett nummer Konverterar talet till text: "ร…lder" och 30 returnerar ร…lder 30 Genererar ett felmeddelande om typmatchningsfel
Tvรฅ numeriska strรคngar "10" och "5" returnerar 105 "10" + "5" kan addera och returnera 15
Ett nullvรคrde Behandlar Null som en tom strรคng Returnerar Null och ignorerar hela resultatet

๐Ÿ’ก Tips: Anvรคnd alltid et-tecknet fรถr sammanfogning och spara plustecknet fรถr aritmetiska operationerSรคtt ett mellanslag fรถre och efter et-tecknet, eftersom Total& lรคses av VBA som ett Long-deklarationstecken.

VBA String Manipulation Funktioner

VBA String Manipulation รคr ett viktigt inslag i Excel VBA fรถr makroprogrammering och strรคngoperationer. Excel tillhandahรฅller olika typer av VBA String Manipulation-funktioner som:

  • Vรคnsteranvรคnds fรถr att t.ex.tract tecken frรฅn vรคnster sida av strรคngen
  • Hรถgeranvรคnds fรถr att t.ex.tract tecken frรฅn hรถger sida av strรคngen
  • Midanvรคnds fรถr att t.ex.tracen delstrรคng frรฅn mitten av en strรคng
  • Len: anvรคnds fรถr att hitta lรคngden pรฅ en strรคng
  • InStr: anvรคnds fรถr att hitta positionen fรถr en delstrรคng i en strรคng
  • Trimanvรคnds fรถr att ta bort mellanslag frรฅn bรฅda รคndarna av en strรคng
  • ersรคttaanvรคnds fรถr att byta ut varje fรถrekomst av en delstrรคng mot en annan
  • UCase / LCaseanvรคnds fรถr att konvertera en strรคng till versaler eller gemener

Tabellen nedan visar syntaxen fรถr varje funktion med ett utfรถrt exempel, sรฅ att du kan kopiera mรถnstret direkt till ett makro.

Funktion syntax Exempelvis Produktion
Vรคnster Vรคnster(strรคng, lรคngd) Vรคnster(โ€œJul-2015โ€, 3) juli
Hรถger Hรถger(strรคng, lรคngd) Hรถger(โ€œJul-2015โ€, 4) 2015
Mid Mitten (strรคng, start, lรคngd) Mitten ("juli-2015", 5, 4) 2015
Len Len(strรคng) Len(โ€œJuli-2015โ€) 8
InStr InStr(start, strรคng, delstrรคng) InStr(1, "Jul-2015", "-") 4
Trim Trim(strรคng) Trim(" Guru99โ€) Guru99
ersรคtta Ersรคtt(strรคng, hitta, ersรคtt) Ersรคtt(โ€œJul-2015โ€, โ€œ-โ€œ, โ€œ/โ€) 2015 juli
UCase UCase(strรคng) UCase("guru99") GURU99

Makrot nedan kombinerar flera av dessa funktioner fรถr att รฅterskapa en datumetikett frรฅn dess delar.

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 makrot kรถrs visas juli 2015. Varje funktion returnerar ett nytt vรคrde och lรคmnar den ursprungliga strรคngen orรถrd, vilket รคr anledningen till att resultaten sรคkert kan kombineras i ett enda uttryck.

Dessa funktioner arbetar alla pรฅ en strรคng i taget. Nรคr ett enda vรคrde innehรฅller en hel lista hanterar tvรฅ andra funktioner det bรคttre.

Hur man delar och sammanfogar strรคngar i VBA

Data som klistras in i Excel kommer ofta som ett lรฅngt vรคrde med en avgrรคnsare mellan varje element, till exempel "Pepsi, Coca-Cola, Fanta, Juice". Att lรคsa det med Mid och InStr รคr lรฅngsamt och kรคnsligt. VBA tillhandahรฅller ett matchande par av funktioner fรถr just detta jobb.

Split tar en avgrรคnsad strรคng och returnerar en nollbaserad array, med ett element per objekt. Ansluta sig gรถr det omvรคnda, tar en array och returnerar en enda strรคng med en avgrรคnsare mellan elementen. Observera att Join fungerar pรฅ en array, inte pรฅ tvรฅ separata strรคngar.

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

Loopen skriver varje dryck till en egen kalkylbladsrad, och meddelanderutan visar sedan Pepsi | Coca-Cola | Fanta | Juice. Tre punkter gรถr detta mรถnster tillfรถrlitligt i produktionskod:

  • Nollbaserat resultat: Split returnerar alltid en array numrerad frรฅn 0, oavsett vad Option Base รคr instรคlld pรฅ, sรฅ kรถr loopen med LBound och UBound snarare รคn ett fast nummer.
  • Deklarera som String(): Tilldela resultatet till en dynamisk strรคngmatris. Om en fast storlek deklareras fรถrst orsakas ett kompileringsfel.
  • Tom inmatning: Att dela en tom strรคng returnerar en array utan element, sรฅ testa med UBound innan du lรคser Items(0).

ร„ven med rรคtt funktion vald, misslyckas strรคngkod pรฅ ett litet antal fรถrutsรคgbara sรคtt.

Vanliga VBA-strรคngfel och hur man รฅtgรคrdar dem

De flesta strรคngfel i Excel VBA har en kort lista med orsaker. Att identifiera symptomet sparar en lรฅng felsรถkningssession.

  • Typmatchningsfel vid sammankoppling: Ett plustecken anvรคndes mellan text och ett nummer. Ersรคtt det med ett et-tecken, vilket konverterar talet automatiskt.
  • InStr returnerar 0: Delstrรคngen hittades inte. InStr returnerar 0 snarare รคn -1 vid fel, sรฅ testa fรถr ett vรคrde stรถrre รคn noll innan resultatet skickas till Mid.
  • Ogiltigt proceduranrop i mitten eller vรคnster: Den begรคrda lรคngden รคr negativ, eller startpositionen รคr under 1. Skydda anropet med Len sรฅ att lรคngden aldrig รถverstiger strรคngen.
  • Jรคmfรถrelser som borde matcha men inte gรถr det: Efterfรถljande mellanslag frรฅn importerad data bryter likheten. Radbryt bรฅda sidor i Trim och anvรคnd StrComp nรคr gemener och skiftlรคgen ska ignoreras.
  • Text som inte blir ett nummer: Ett vรคrde som "1 200" misslyckas i aritmetiken pรฅ grund av separatorn. Ta bort det med Replace innan du konverterar med CLng.

Ladda ner Excel som innehรฅller ovanstรฅende kod

Ladda ner ovanstรฅende Excel-fil Code

Vanliga frรฅgor

En strรคng med variabel lรคngd rymmer upp till ungefรคr tvรฅ miljarder tecken, och en strรคng med fast lรคngd rymmer upp till 65 400. En cell i kalkylbladet lagrar dock bara 32 767 tecken, sรฅ lรคngre vรคrden avkortas nรคr de skrivs till ett ark.

Likhetstecknet jรคmfรถr dem som standard med skiftlรคgeskรคnslighet. Anvรคnd StrComp(a, b, vbTextCompare) fรถr ett resultat som inte รคr skiftlรคgeskรคnsligt, eller placera Option Compare Text hรถgst upp i modulen fรถr att รคndra standardvรคrdet fรถr hela modulen.

Et-tecknet konverterar varje operand till text innan den sammanfogas, sรฅ 10 & 5 returnerar strรคngen 105. Behรฅll vรคrdena numeriska och lรคgg till dem fรถrst, sammanfoga sedan resultatet om det behรถver visas i ett meddelande.

Ja. Beskriv ingรฅngen och รถnskad utgรฅng, till exempeltract koden fรถre det fรถrsta bindestrecket, och en AI-assistent returnerar ett Left- och InStr-uttryck. Testa det mot kantfall som ett saknat bindestreck.

Ja. Klistra in ett kapslat uttryck som Mid med InStr inuti sรฅ delar en AI-assistent upp det i steg, namnger varje argument och flaggar det fall dรคr InStr returnerar noll och anropet misslyckas.

Sammanfatta detta inlรคgg med: