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.

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
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Udførelse af ovenstående kode giver følgende resultat
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


