VBA-strengmanipulasjonsfunksjoner og Operatorer
โก Smart oppsummering
VBA-strengmanipuleringsfunksjoner og Operatorer kombinerer, mรฅler og ekskluderertract-tekst i Excel-makroer. Denne siden forklarer sammenkoblingsoperatoren, funksjonene Left, Right, Mid, Len og InStr, deling og sammenfรธyning, og feilene som oftest รธdelegger strengkoden.

VBA-streng Operatorer
Strengdata brukes til รฅ holde data som bestรฅr av tall, tegn og symboler. "Jul-2015" er et eksempel pรฅ en strengdata. Den bestรฅr av
- Karakterer (jul)
- Symbol (-)
- Numbers (2015)
Strengeoperatorer brukes til รฅ manipulere strengdata. Du kan for eksempel sette sammen verdien av juli-2015 fra de tre fรธrste bokstavene i mรฅneden og รฅret som "Jul-3".
Fรธlgende tabell viser sammenkoblings-VBA-strengoperatoren.
| S / N | Operator | Tekniske beskrivelser | Eksempel | Produksjon |
|---|---|---|---|---|
| 1 | & | Konkatener: Denne operatoren brukes til รฅ sette sammen strenger | ยซJohnยป og ยซDoeยป | John Doe |
Eksempelkilde Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Utfรธrelse av koden ovenfor gir fรธlgende resultat
&-tegnet er ikke det eneste symbolet som ser ut til รฅ bli med i tekst, og forskjellen mellom de to spiller en rolle nรฅr tall er involvert.
Forskjellen mellom & og + for strengsammenkobling
VBA aksepterer bรฅde og-tegnet og plusstegnet mellom to tekstverdier, sรฅ nybegynnere behandler dem ofte som utskiftbare. De oppfรธrer seg annerledes sรฅ snart รฉn operand er et tall eller en tom verdi, og bare รฉn av dem er trygg.
| Atferd | & (og-tegnet) | + (pluss) |
|---|---|---|
| To tekstverdier | Blir med dem: ยซGuruยซ&ยป returnerer Guru99 | Blir med dem: ยซGuruยซ+ ยซ99ยป returnerer Guru99 |
| Tekst og et tall | Konverterer tallet til tekst: ยซAlderยป og 30 returnerer Alder 30 | Oppstรฅr en feilmelding om typeavvik |
| To numeriske strenger | ยซ10ยป og ยซ5ยป returnerer 105 | ยซ10ยป + ยซ5ยป kan legge sammen og returnere 15 |
| En nullverdi | Behandler Null som en tom streng | Returnerer null og forkaster hele resultatet |
๐ก Tips: Bruk alltid og-tegnet for sammenkobling og reserver plusstegnet for aritmetiske operasjonerSett inn et mellomrom fรธr og etter og-tegnet, fordi skriving av Total& leses av VBA som et Long-deklarasjonstegn.
VBA-strengmanipulasjonsfunksjoner
VBA String Manipulation er et viktig element i Excel VBA for makroprogrammering og strengoperasjoner. Excel tilbyr ulike typer VBA-strengmanipulasjonsfunksjoner som:
- Venstrebrukes til f.eks.tract tegn fra venstre side av strengen
- Ikke santbrukes til f.eks.tract tegn fra hรธyre side av strengen
- Midbrukes til f.eks.tracen delstreng fra midten av en streng
- Len: brukes til รฅ finne lengden pรฅ en streng
- InStr: brukes til รฅ finne posisjonen til en delstreng i en streng
- Trimbrukes til รฅ fjerne mellomrom fra begge ender av en streng
- Erstattbrukes til รฅ bytte ut hver forekomst av รฉn delstreng med en annen
- UCase / LCasebrukes til รฅ konvertere en streng til store eller smรฅ bokstaver
Tabellen nedenfor viser syntaksen for hver funksjon med et utarbeidet eksempel, slik at du kan kopiere mรธnsteret direkte inn i en makro.
| Funksjon | syntax | Eksempel | Produksjon |
|---|---|---|---|
| Venstre | Venstre(streng, lengde) | Venstre(ยซjuli-2015ยป, 3) | Jul |
| Ikke sant | Hรธyre(streng, lengde) | Hรธyre(ยซjuli-2015ยป, 4) | 2015 |
| Mid | Midt(streng, start, lengde) | Midt (ยซjuli 2015ยป, 5, 4) | 2015 |
| Len | Lenge(streng) | Len (ยซjuli 2015ยป) | 8 |
| InStr | InStr(start, streng, delstreng) | InStr(1, "Jul-2015", "-") | 4 |
| Trim | Trim(streng) | Trim(โ Guru99โ) | Guru99 |
| Erstatt | Erstatt(streng, finn, erstatt) | Erstatt(โJul-2015โ, โ-โ, โ/โ) | Jul / 2015 |
| UCase | UCase(streng) | UCase("guru99") | GURU99 |
Makroen nedenfor kombinerer flere av disse funksjonene for รฅ gjenoppbygge en datoetikett fra delene.
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 makroen kjรธres, vises juli 2015. Hver funksjon returnerer en ny verdi og lar den opprinnelige strengen vรฆre urรธrt, og det er derfor resultatene trygt kan kombineres i ett enkelt uttrykk.
Disse funksjonene fungerer alle pรฅ รฉn streng om gangen. Nรฅr รฉn enkelt verdi inneholder en hel liste, hรฅndterer to andre funksjoner den bedre.
Slik deler og kobler du sammen strenger i VBA
Data som limes inn i Excel kommer ofte som รฉn lang verdi med et skilletegn mellom hvert element, for eksempel ยซPepsi, Coke, Fanta, Juiceยป. Det er tregt og skjรธrt รฅ lese dette med Mid og InStr. VBA tilbyr et matchende par med funksjoner for akkurat denne jobben.
Dele tar en avgrenset streng og returnerer en nullbasert array, med ett element per element. Bli med gjรธr det motsatte, tar en array og returnerer en enkelt streng med et skilletegn mellom elementene. Merk at Join fungerer pรฅ en array, ikke pรฅ to separate strenger.
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 inn i sin egen regnearksrad, og meldingsboksen viser deretter Pepsi | Coca-Cola | Fanta | Juice. Tre punkter gjรธr dette mรธnsteret pรฅlitelig i produksjonskode:
- Nullbasert resultat: Split returnerer alltid en matrise nummerert fra 0, uansett hva Option Base er satt til, sรฅ kjรธr lรธkken med LBound og UBound i stedet for et fast tall.
- Deklarer som streng(): Tilordne resultatet til en dynamisk strengmatrise. Hvis en fast stรธrrelse deklareres fรธrst, forรฅrsaker det en kompileringsfeil.
- Tom inndata: ร dele en tom streng returnerer en matrise uten elementer, sรฅ test med UBound fรธr du leser Items(0).
Selv med riktig funksjon valgt, feiler strengkode pรฅ et lite antall forutsigbare mรฅter.
Vanlige VBA-strengfeil og hvordan du fikser dem
De fleste strengfeil i Excel VBA kommer fra en kort liste over รฅrsaker. ร gjenkjenne symptomet sparer en lang feilsรธkingsรธkt.
- Typeavvik ved sammenkobling: Et plusstegn ble brukt mellom tekst og et tall. Erstatt det med et &-tegn, som konverterer tallet automatisk.
- InStr returnerer 0: Delstrengen ble ikke funnet. InStr returnerer 0 i stedet for -1 ved feil, sรฅ test for en verdi stรธrre enn null fรธr du sender resultatet til Mid.
- Ugyldig prosedyrekall i Midt eller Venstre: Den forespurte lengden er negativ, eller startposisjonen er under 1. Beskytt kallet med Len slik at lengden aldri overstiger strengen.
- Sammenligninger som burde samsvare, men ikke samsvarer: Etterfรธlgende mellomrom fra importerte data bryter likheten. Bryt begge sider i Trim, og bruk StrComp nรฅr store og smรฅ bokstaver skal ignoreres.
- Tekst som ikke blir til et tall: En verdi som ยซ1,200ยป mislykkes i aritmetikk pรฅ grunn av skilletegnet. Fjern den med Erstatt fรธr du konverterer med CLng.
Last ned Excel som inneholder koden ovenfor
Last ned Excel-filen ovenfor Code


