Funcții de manipulare a șirurilor VBA și Operatori
⚡ Rezumat inteligent
Funcții de manipulare a șirurilor VBA și Operatori combină, măsoară și exprimătracText t în macrocomenzile Excel. Această pagină explică operatorul de concatenare, funcțiile Left, Right, Mid, Len și InStr, divizarea și unirea și erorile care cel mai adesea rup codul șirurilor.

șir VBA Operatori
Datele șir sunt folosite pentru a păstra date care sunt alcătuite din numere, caractere și simboluri. „Iul-2015” este un exemplu de date șir. Este alcătuit din
- Personaje (iul.)
- Simbol (-)
- Numbers (2015)
Operatorii șir sunt utilizați pentru a manipula datele șir. De exemplu, puteți concatena valoarea lunii iulie-2015 din primele 3 litere ale lunii și ale anului, cum ar fi „Iul-2015”.
Următorul tabel arată operatorul de șir VBA de concatenare.
| S / N | OperaTdR | Descriere | Exemplu | producție |
|---|---|---|---|---|
| 1 | & | Concatenare: Acest operator este folosit pentru a concatena șiruri împreună | „Ioan” și „Doe” | Anonim |
Sursa de exemplu Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Executarea codului de mai sus produce următorul rezultat
Ampersand-ul nu este singurul simbol care pare să unească textul, iar diferența dintre cele două contează odată ce sunt implicate numere.
Diferența dintre & și + pentru concatenarea șirurilor de caractere
VBA acceptă atât semnul ampersand, cât și semnul plus între două valori text, așa că începătorii le tratează adesea ca fiind interschimbabile. Se comportă diferit imediat ce un operand este un număr sau o valoare goală și doar unul dintre ele este sigur.
| comportament | & (Ampersand) | + (Plus) |
|---|---|---|
| Două valori textuale | Li se alătură: „Guru„Și „99” returnează Guru99 | Li se alătură: „Guru„ + „99” returnează Guru99 |
| Text și un număr | Convertește numărul în text: „Vârstă” și 30 returnează Vârsta 30 | Ridică o eroare de nepotrivire de tip |
| Două șiruri numerice | „10” și „5” returnează 105 | „10” + „5” pot aduna și returna 15 |
| O valoare nulă | Tratează Null ca un șir gol | Returnează Null și elimină întregul rezultat |
💡 Sfat: Folosește întotdeauna semnul ampersand pentru concatenare și rezervă semnul plus pentru operatii aritmeticePuneți un spațiu înainte și după caracterul ampersand, deoarece scrierea lui Total& este citită de VBA ca un caracter de declarație de tip Long.
Funcții de manipulare a șirurilor VBA
Manipularea șirurilor VBA este un element important în Excel VBA pentru programare macro și operații cu șiruri. Excel oferă diferite tipuri de funcții de manipulare a șirurilor VBA, cum ar fi:
- Stânga: este folosit pentru a extract caractere din partea stângă a șirului
- Dreapta: este folosit pentru a extract caractere din partea dreaptă a șirului
- La mijlocul: este folosit pentru a extracun subșir din mijlocul unui șir
- Len: este folosit pentru a afla lungimea unui șir
- InStr: este folosit pentru a găsi poziția unui subșir într-un șir
- Tunde: este folosit pentru a elimina spațiile de la ambele capete ale unui șir de caractere
- Înlocui: este folosit pentru a schimba fiecare apariție a unui subșir cu altul
- UCase / LCase: sunt folosite pentru a converti un șir de caractere în majuscule sau minuscule
Tabelul de mai jos prezintă sintaxa fiecărei funcții cu un exemplu practic, astfel încât să puteți copia modelul direct într-o macrocomandă.
| Funcţie | Sintaxă | Exemplu | producție |
|---|---|---|---|
| Stânga | Stânga(șir, lungime) | Stânga(„Iul-2015”, 3) | iulie |
| Dreapta | Dreapta(șir, lungime) | Corect(„Iul-2015”, 4) | 2015 |
| La mijlocul | Mijloc(șir, început, lungime) | Mijlocul („Iulie-2015”, 5, 4) | 2015 |
| Len | Len(șir) | Len („Iulie-2015”) | 8 |
| InStr | InStr(start, string, substring) | InStr(1, „Iul-2015”, „-“) | 4 |
| Tunde | Decupare (șir) | Trim(” Guru99 „) | Guru99 |
| Înlocui | Înlocuire(șir, găsire, înlocuire) | Înlocuiește(„Iul-2015”, „-“, „/”) | Iul / 2015 |
| UCase | UCase (șir) | UCase(„guru99”) | GURU99 |
Macrocomanda de mai jos combină mai multe dintre aceste funcții pentru a reconstrui o etichetă de dată din părțile sale.
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
Rularea macrocomenzii afișează data din iulie 2015. Fiecare funcție returnează o valoare nouă și lasă șirul original neatins, motiv pentru care rezultatele pot fi combinate în siguranță într-o singură expresie.
Toate aceste funcții lucrează pe câte un șir de caractere odată. Când o singură valoare conține o listă întreagă, alte două funcții o gestionează mai bine.
Cum se divizează și se unesc șiruri de caractere în VBA
Datele lipite în Excel ajung adesea ca o singură valoare lungă cu un separator între fiecare element, cum ar fi „Pepsi, Coca-Cola, Fanta, Suc”. Citirea acestora cu Mid și InStr este lentă și fragilă. VBA oferă o pereche de funcții potrivite exact pentru această sarcină.
Despică primește un șir delimitat și returnează un tablou cu bază zero, cu câte un element per element. Alatura-te face invers, luând un array și returnând un singur șir de caractere cu un separator între elemente. Rețineți că funcția Join funcționează pe un array, nu pe două șiruri de caractere separate.
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
Bucla scrie fiecare băutură în propriul rând din foaia de lucru, iar caseta de mesaje afișează apoi Pepsi | Coke | Fanta | Juice. Trei aspecte fac ca acest model să fie fiabil în codul de producție:
- Rezultat cu bază zero: Split returnează întotdeauna un tablou numerotat de la 0, indiferent de valoarea la care este setată Option Base, deci bucla se folosește LBound și UBound în loc de un număr fix.
- Declarați ca șir de caractere (): Atribuiți rezultatul unei matrice dinamice de tip String. Declararea mai întâi a unei dimensiuni fixe provoacă o eroare de compilare.
- Intrare goală: Împărțirea unui șir gol returnează un tablou fără elemente, așadar testați cu UBound înainte de a citi Items(0).
Chiar și cu funcția aleasă corect, codul de tip șir de caractere eșuează într-un număr mic de moduri previzibile.
Erori comune ale șirurilor VBA și cum să le remediați
Majoritatea erorilor de tip șir de caractere din Excel VBA provin dintr-o listă scurtă de cauze. Recunoașterea simptomului economisește o sesiune lungă de depanare.
- Nepotrivire de tip la concatenare: S-a folosit un semn plus între text și un număr. Înlocuiți-l cu un ampersand, care convertește automat numărul.
- InStr returnează 0: Subșirul nu a fost găsit. InStr returnează 0 în loc de -1 în caz de eșec, așadar testați pentru o valoare mai mare decât zero înainte de a transmite rezultatul către Mid.
- Apel de procedură nevalid în Mid sau Left: Lungimea solicitată este negativă sau poziția de început este sub 1. Protejați apelul cu Len astfel încât lungimea să nu depășească niciodată șirul de caractere.
- Comparații care ar trebui să se potrivească, dar nu se potrivesc: Spațiile finale din datele importate întrerup egalitatea. Încadrați ambele părți în Trim și folosiți StrComp atunci când majusculele/minusculele trebuie ignorate.
- Text care nu va deveni un număr: O valoare precum „1,200” eșuează la aritmetică din cauza separatorului. Eliminați-o cu Înlocuire înainte de a o converti cu CLng.
Descărcați Excel care conține codul de mai sus
Descărcați fișierul Excel de mai sus Code


