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



