VBA-merkkijonojen manipulointitoiminnot ja OperaTors
โก รlykรคs yhteenveto
VBA-merkkijonojen manipulointifunktiot ja Operatekijรคt yhdistรคvรคt, mittaavat ja testaavattract-teksti Excel-makrojen sisรคllรค. Tรคllรค sivulla selitetรครคn ketjutusoperaattori, Left-, Right-, Mid-, Len- ja InStr-funktiot, merkkijonojen jakaminen ja yhdistรคminen sekรค useimmin merkkijonokoodia rikkovat virheet.

VBA merkkijono OperaTors
Merkkijonotietoja kรคytetรครคn sรคilyttรคmรครคn tietoja, jotka koostuvat numeroista, merkeistรค ja symboleista. "Heinรค-2015" on esimerkki merkkijonodatasta. Se koostuu
- Hahmot (heinรคkuu)
- Symboli (-)
- Numbers (2015)
Merkkijonooperaattoreita kรคytetรครคn merkkijonotietojen kรคsittelyyn. Voit esimerkiksi yhdistรครค heinรคkuun 2015 arvon kuukauden ja vuoden 3 ensimmรคisestรค kirjaimesta, kuten "heinรคkuu-2015".
Seuraavassa taulukossa nรคkyy ketjutuksen VBA-merkkijonooperaattori.
| S / N | OperaTor | Tuotetiedot | esimerkki | ulostulo |
|---|---|---|---|---|
| 1 | & | Liitรค: Tรคtรค operaattoria kรคytetรครคn merkkijonojen ketjuttamiseen | "John" ja "Doe" | Matti Meikรคlรคinen |
Esimerkkilรคhde Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Yllรค olevan koodin suorittaminen tuottaa seuraavan tuloksen
Et-merkki ei ole ainoa symboli, joka nรคyttรครค yhdistรคvรคn tekstiรค, ja niiden vรคlinen ero on tรคrkeรค, kun mukana on numeroita.
Ero merkkijonojen ketjutuksessa merkkijonojen & ja + vรคlillรค
VBA hyvรคksyy sekรค et-merkin ettรค plusmerkin kahden tekstiarvon vรคlissรค, joten aloittelijat usein pitรคvรคt niitรค keskenรครคn vaihdettavina. Ne toimivat eri tavalla heti, kun toinen operandi on numero tai tyhjรค arvo, ja vain toinen niistรค on turvallinen.
| Kรคyttรคytyminen | & (E-merkki) | + (Plus) |
|---|---|---|
| Kaksi tekstiarvoa | Liittyy heihin: "Guruโ ja โ99โ palauttaa Guru99 | Liittyy heihin: "Guruโ + โ99โ palauttaa Guru99 |
| Teksti ja numero | Muuntaa luvun tekstiksi: โIkรค โ ja 30 palauttaa iรคn 30 | Aiheuttaa tyypin epรคsuhta -virheen |
| Kaksi numeromerkkijonoa | โ10โ ja โ5โ palauttavat 105 | โ10โ + โ5โ voi lisรคtรค ja palauttaa arvon 15 |
| Null-arvo | Kรคsittelee Null-arvoa tyhjรคnรค merkkijonona | Palauttaa null-arvon ja hylkรครค koko tuloksen |
๐ก Vinkki: Kรคytรค aina et-merkkiรค ketjutuksessa ja varaa plusmerkki aritmeettinen toimintaLisรครค vรคlilyรถnti et-merkin et-merkin eteen ja sen jรคlkeen, koska VBA lukee Total&-merkin kirjoittamisen Long-tyyppisenรค deklarointimerkkinรค.
VBA-merkkijonojen manipulointitoiminnot
VBA-merkkijonojen manipulointi on tรคrkeรค elementti Excel VBA makroohjelmointiin ja merkkijonooperaatiot. Excel tarjoaa erilaisia โโVBA-merkkijonojen manipulointitoimintoja, kuten:
- Vasenkรคytetรครคn esim.tract merkkiรค merkkijonon vasemmalta puolelta
- Oikeakรคytetรครคn esim.tract merkkiรค merkkijonon oikealta puolelta
- keski-kรคytetรครคn esim.tracta osamerkkijono merkkijonon keskeltรค
- Len: kรคytetรครคn merkkijonon pituuden mรครคrittรคmiseen
- InStr: kรคytetรครคn etsimรครคn alimerkkijonon sijainti merkkijonossa
- Trimmata: kรคytetรครคn poistamaan vรคlilyรถntejรค merkkijonon molemmista pรคistรค
- korvata: kรคytetรครคn vaihtamaan jokaisen alimerkkijonon esiintymรคn toiseen
- UCase / LCase: kรคytetรครคn merkkijonon muuntamiseen isoksi tai pieneksi kirjaimeksi
Alla oleva taulukko nรคyttรครค kunkin funktion syntaksin toimivan esimerkin kera, joten voit kopioida kuvion suoraan makroon.
| Toiminto | Syntaksi | esimerkki | ulostulo |
|---|---|---|---|
| Vasen | Left(merkkijono, pituus) | Vasen (โheinรคkuu 2015โ, 3) | heinรคkuu |
| Oikea | Oikea(merkkijono, pituus) | Oikea ("heinรคkuu 2015", 4) | 2015 |
| keski- | Mid(merkkijono, alku, pituus) | Puolivรคlissรค (โheinรคkuu 2015โ, 5, 4) | 2015 |
| Len | Pituus (merkkijono) | Len ("heinรคkuu 2015") | 8 |
| InStr | InStr(alku, merkkijono, alimerkkijono) | InStr(1, "heinรคkuu-2015", "-") | 4 |
| Trimmata | Leikkaa(merkkijono) | Leikata(" Guru99 tuumaa) | Guru99 |
| korvata | Korvaa(merkkijono, etsi, korvaa) | Korvaa ("Heinรค-2015", "-", "/") | heinรคkuuta/2015 |
| UCase | UCase(merkkijono) | UCase("guru99") | GURU99 |
Alla oleva makro yhdistรครค useita nรคistรค funktioista pรคivรคmรครคrรคtunnisteen uudelleenrakentamiseksi sen osista.
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
Makron suorittaminen nรคyttรครค heinรคkuun 2015. Jokainen funktio palauttaa uuden arvon ja jรคttรครค alkuperรคisen merkkijonon koskemattomaksi, minkรค vuoksi tulokset voidaan yhdistรครค turvallisesti yhteen lausekkeeseen.
Nรคmรค funktiot kรคsittelevรคt kerrallaan yhtรค merkkijonoa. Kun yksi arvo sisรคltรครค koko listan, kaksi muuta funktiota kรคsittelevรคt sen paremmin.
Merkkijonojen jakaminen ja yhdistรคminen VBA:ssa
Exceliin liitetyt tiedot saapuvat usein yhtenรค pitkรคnรค arvona, jossa on erotinmerkki kohtien vรคlissรค, kuten โPepsi, Coca-Cola, Fanta, Mehuโ. Tรคmรคn lukeminen Mid- ja InStr-muuttujalla on hidasta ja haurasta. VBA tarjoaa juuri tรคhรคn tehtรคvรครคn sopivan funktioparin.
Jakaa ottaa erotellun merkkijonon ja palauttaa nollapohjaisen taulukon, jossa on yksi elementti kohdetta kohden. Liity tekee pรคinvastoin, eli ottaa taulukon ja palauttaa yhden merkkijonon, jonka elementtien vรคlissรค on erotinmerkki. Huomaa, ettรค Join toimii taulukon, ei kahden erillisen merkkijonon kanssa.
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
Silmukka kirjoittaa jokaisen juoman omalle laskentataulukon rivilleen, ja viestiruutu nรคyttรครค sitten Pepsi | Coca-Cola | Fanta | Mehu. Kolme asiaa tekevรคt tรคstรค mallista luotettavan tuotantokoodissa:
- Nollapohjainen tulos: Split palauttaa aina taulukon, joka on numeroitu nollasta alkaen, riippumatta siitรค, mikรค Option Base on asetettu arvoon, joten ohjaa silmukkaa LBound- ja UBound-muuttujalla kiinteรคn luvun sijaan.
- Ilmoita merkkijonona(): Sijoita tulos dynaamiseen merkkijonotaulukkoon. Kiinteรคn koon mรครคrittรคminen ensin aiheuttaa kรครคnnรถsvirheen.
- Tyhjรค syรถte: Tyhjรคn merkkijonon jakaminen palauttaa elementtittรถmรคn taulukon, joten testaa UBoundilla ennen Items(0):n lukemista.
Vaikka oikea funktio olisi valittu, merkkijonokoodi epรคonnistuu muutamalla ennustettavalla tavalla.
Yleisiรค VBA-merkkijonovirheitรค ja niiden korjaaminen
Useimmat Excel VBA:n merkkijonovirheet johtuvat lyhyestรค luettelosta syitรค. Oireen tunnistaminen sรครคstรครค pitkรคn virheenkorjausistunnon.
- Tyyppiristiriita ketjutuksessa: Tekstin ja numeron vรคlissรค kรคytettiin plusmerkkiรค. Korvaa se et-merkillรค, joka muuntaa numeron automaattisesti.
- InStr palauttaa arvon 0: Osamerkkijonoa ei lรถytynyt. InStr palauttaa virhetilanteessa arvon 0 eikรค -1, joten testaa, onko arvo suurempi kuin nolla ennen tuloksen vรคlittรคmistรค Midille.
- Virheellinen proseduurikutsu keski- tai vasemmalla puolella: Pyydetty pituus on negatiivinen tai aloituskohta on alle 1. Suojaa kutsu Len-muuttujalla, jotta pituus ei koskaan ylitรค merkkijonoa.
- Vertailukohdat, joiden pitรคisi tรคsmรคtรค, mutta jotka eivรคt tรคsmรครค: Tuodun datan lopussa olevat vรคlilyรถnnit rikkovat tasa-arvon. Rivitรค molemmat puolet Trim-funktiossa ja kรคytรค StrComp-funktiota, kun kirjainkokoa ei haluta huomioida.
- Teksti, josta ei tule numeroa: Arvo, kuten โ1 200โ, epรคonnistuu aritmeettisesti erottimen vuoksi. Poista se Replace-komennolla ennen muuntamista CLng-komennolla.
Lataa Excel, joka sisรคltรครค yllรค olevan koodin
Lataa yllรค oleva Excel-tiedosto Code


