VBA karakterlánc-manipulációs függvények és Operatorzok
⚡ Okos összefoglaló
VBA karakterlánc-manipulációs függvények és Operaa torok kombinálják, mérik és kiértékeliktract szöveg az Excel makrókban. Ez az oldal ismerteti az összefűző operátort, a Left, Right, Mid, Len és InStr függvényeket, a felosztást és az egyesítést, valamint a karakterlánc-kódban leggyakrabban előforduló hibákat.

VBA karakterlánc Operatorzok
A karakterláncadatok a számokból, karakterekből és szimbólumokból álló adatok tárolására szolgálnak. „Jul-2015” egy példa egy karakterlánc-adatra. Ez abból áll
- Karakterek (júl.)
- Szimbólum (-)
- Numbers (2015)
A karakterlánc-operátorok a karakterláncadatok manipulálására szolgálnak. Például összefűzheti a 2015. július-3. évi értéket a hónap és az év első 2015 betűjéből, például „júl-XNUMX”.
A következő táblázat az összefűzött VBA karakterlánc operátort mutatja.
| S / N | Operator | Leírás | Példa | teljesítmény |
|---|---|---|---|---|
| 1 | & | Összefűzés: Ez az operátor karakterláncok összefűzésére szolgál | "Gipsz Jakab" | John Doe |
Példaforrás Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
A fenti kód végrehajtása a következő eredményt adja
Az és-jel nem az egyetlen szimbólum, amely szöveget köt össze, és a kettő közötti különbség akkor számít, ha számokról van szó.
Különbség a & és a + között a karakterlánc-összefűzésnél
A VBA elfogadja mind az és-jelet, mind a pluszjelet két szöveges érték között, így a kezdők gyakran felcserélhetőnek tekintik őket. Másképp viselkednek, amint az egyik operandus szám vagy üres érték, és csak az egyik biztonságos közülük.
| Viselkedés | & (És-jel) | + (plusz) |
|---|---|---|
| Két szöveges érték | Csatlakozik hozzájuk: „Guru„” és „99” ad vissza Guru99 | Csatlakozik hozzájuk: „Guru„+„99” ad vissza Guru99 |
| Szöveg és egy szám | A számot szöveggé alakítja: az „Age ” és a 30 a 30-as életkort adja vissza. | Típus-eltérés hibát jelez |
| Két numerikus karakterlánc | A „10” és az „5” 105-öt ad vissza | A „10” + „5” összeadásával 15-öt adhat vissza. |
| Null érték | A Null értéket üres karakterláncként kezeli | Null értéket ad vissza, és elveti a teljes eredményt. |
💡 Tipp: Mindig az és jelet használd az összefűzéshez, a plusz jelet pedig tartsd fenn a következőre: aritmetikai műveletekTegyen szóközt az és jel elé és mögé, mert a Total& írását a VBA Long típusú deklarációs karakterként olvassa.
VBA karakterlánc-manipulációs függvények
A VBA karakterlánc-manipuláció fontos eleme Excel VBA makró programozáshoz és karakterláncműveletek. Az Excel különféle típusú VBA karakterlánc-manipulációs funkciókat kínál, például:
- Bal: ex-re használjáktract karakter a karakterlánc bal oldaláról
- Jobb: ex-re használjáktract karakter a karakterlánc jobb oldaláról
- Középső: ex-re használjáktracta alkarakterlánc a karakterlánc közepéből
- Len: egy karakterlánc hosszának meghatározására szolgál
- InStr: egy részkarakterlánc pozíciójának meghatározására szolgál egy karakterláncban
- Állapot: a karakterlánc mindkét végéről szóközök eltávolítására szolgál
- Cserélje: egy alkarakterlánc minden előfordulásának egy másikra cserélésére szolgál
- UCase / LCase: karakterláncok nagybetűssé vagy kisbetűssé alakítására szolgálnak
Az alábbi táblázat az egyes függvények szintaxisát mutatja egy működő példával, így a mintát közvetlenül egy makróba másolhatja.
| Funkció | Szintaxis | Példa | teljesítmény |
|---|---|---|---|
| Bal | Bal(karakterlánc, hossz) | Balra („2015. július”, 3) | Július |
| Jobb | Jobbra(karakterlánc, hossz) | Jobbra („2015. július”, 4) | 2015 |
| Középső | Mid(karakterlánc, kezdet, hossz) | Közepes („2015. július”, 5, 4) | 2015 |
| Len | Len(karakterlánc) | Len („2015. július”) | 8 |
| InStr | InStr(kezdet, karakterlánc, alkarakterlánc) | InStr(1, "júl-2015", "-") | 4 |
| Állapot | Trim(karakterlánc) | Trim(” Guru99 hüvelyk) | Guru99 |
| Cserélje | Csere(karakterlánc, keresés, csere) | Csere ("2015. július", "-", "/") | Július / 2015 |
| UCase | UCase(karakterlánc) | UCase („guru99”) | GURU99 |
Az alábbi makró ezen függvények közül többet kombinál, hogy a dátumcímkét a részeiből újraépítse.
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
A makró futtatása a 2015. júliusi állapotot jeleníti meg. Minden függvény új értéket ad vissza, és az eredeti karakterláncot érintetlenül hagyja, ezért az eredmények biztonságosan kombinálhatók egyetlen kifejezésben.
Ezek a függvények egyszerre csak egy karakterlánccal dolgoznak. Amikor egyetlen érték egy egész listát tartalmaz, két másik függvény jobban kezeli azt.
Hogyan lehet sztringeket felosztani és egyesíteni VBA-ban?
Az Excelbe beillesztett adatok gyakran egyetlen hosszú értékként érkeznek meg, az egyes elemek között elválasztó jellel, például „Pepsi, Coca-Cola, Fanta, Gyümölcslé”. Ennek a Mid és InStr paraméterekkel való olvasása lassú és törékeny. A VBA pontosan erre a feladatra biztosít egy párosított függvénypárt.
Hasított egy elválasztott karakterláncot vesz fel, és egy nullákkal teli tömböt ad vissza, elemenként egy elemmel. Csatlakozik A Join függvény fordított sorrendben működik, egy tömböt vesz fel, és egyetlen, az elemek között elválasztóval ellátott karakterlánccal tér vissza. Fontos megjegyezni, hogy a Join függvény tömbön működik, két külön karakterláncon nem.
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
A ciklus minden italt a saját munkalap sorába ír, és az üzenetmező ezután a Pepsi | Coca-Cola | Fanta | Juice szöveget jeleníti meg. Három pont teszi ezt a mintát megbízhatóvá a termelési kódban:
- Nulla alapú eredmény: A Split mindig egy 0-tól kezdődő számozású tömböt ad vissza, függetlenül attól, hogy az Option Base értéke mire van beállítva, ezért a ciklust LBound és UBound paraméterekkel vezéreljük fix szám helyett.
- String()-ként deklarálandó: Rendeld az eredményt egy dinamikus String tömbhöz. Ha először fix méretet deklarálsz, az fordítási hibát okoz.
- Üres bemenet: Egy üres karakterlánc felosztása egy elem nélküli tömböt ad vissza, ezért az Items(0) beolvasása előtt teszteld az UBound-dal.
Még a helyes függvény kiválasztása esetén is előfordulhat, hogy a karakterlánc-kód néhány előre látható módon hibát okoz.
Gyakori VBA karakterlánchibák és javításuk
Az Excel VBA karakterlánchibáinak többségét néhány okból kifolyólag találjuk. A tünet felismerése hosszú hibakeresési munkamenetet takarít meg.
- Típuseltérés összefűzéskor: Egy pluszjelet használt a szöveg és a szám között. Cserélje le egy és-jelre, amely automatikusan konvertálja a számot.
- Az InStr értéke 0-t ad vissza: A karakterlánc nem található. Hiba esetén az InStr 0 értéket ad vissza -1 helyett, ezért tesztelje, hogy az érték nagyobb-e nullánál, mielőtt átadná az eredményt a Mid-nek.
- Érvénytelen eljáráshívás a középső vagy a bal oldalon: A kért hossz negatív, vagy a kezdőpozíció 1 alatt van. Védje a hívást Len paraméterrel, hogy a hossz soha ne haladja meg a karakterláncot.
- Összehasonlítások, amelyeknek egyezniük kellene, de nem egyeznek: Az importált adatok végén lévő szóközök megtörik az egyenlőséget. A Trim függvényben mindkét oldalt tördelje be, és ha a kis- és nagybetűket figyelmen kívül kell hagyni, használja az StrComp függvényt.
- Szöveg, ami nem válik számmá: Egy olyan érték, mint például az „1,200”, aritmetikai hibát jelez az elválasztó miatt. Távolítsa el a Replace paranccsal, mielőtt CLng paranccsal konvertálná.
Töltse le a fenti kódot tartalmazó Excelt


