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



