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.

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
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Att kรถra ovanstรฅende kod ger fรถljande resultat
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


