Funkcje manipulacji ciągami VBA i Operatorsy
⚡ Inteligentne podsumowanie
Funkcje manipulacji ciągami VBA i Operatory łączą, mierzą i badajątracTekst wewnątrz makr Excela. Ta strona wyjaśnia operator konkatenacji, funkcje Left, Right, Mid, Len i InStr, dzielenie i łączenie oraz błędy, które najczęściej powodują uszkodzenie kodu ciągu znaków.

Ciąg VBA Operatorsy
Dane typu string służą do przechowywania danych składających się z liczb, znaków i symboli. „Jul-2015” to przykład danych typu string. Składa się z
- Postacie (lipiec)
- Symbol (-)
- Numbers (2015)
Operatorzy stringów służą do manipulowania danymi stringów. Na przykład możesz połączyć wartość July-2015 z pierwszych 3 liter miesiąca i roku, np. „Jul-2015”.
Poniższa tabela przedstawia operator łączenia ciągów znaków w języku VBA.
| S / N | OperaTor | OPIS | Przykład | Wydajność |
|---|---|---|---|---|
| 1 | & | Łączenie: Ten operator służy do łączenia ze sobą ciągów znaków. | "Nieznany z nazwiska" | nieznany z nazwiska |
Przykładowe źródło Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Wykonanie powyższego kodu daje następujący wynik
Znak & nie jest jedynym symbolem używanym do łączenia tekstu. Różnica między nimi staje się widoczna, gdy w grę wchodzą liczby.
Różnica między & i + w łączeniu ciągów znaków
VBA akceptuje zarówno znak ampersand, jak i znak plus między dwiema wartościami tekstowymi, dlatego początkujący często traktują je zamiennie. Zachowują się inaczej, gdy jeden z operandów jest liczbą lub wartością pustą, a tylko jeden z nich jest bezpieczny.
| Zachowanie | & (Amersand) | + (Dodatkowo) |
|---|---|---|
| Dwie wartości tekstowe | Dołącza do nich: „Guru„& „99” powraca Guru99 | Dołącza do nich: „Guru” + „99” zwraca Guru99 |
| Tekst i liczba | Konwertuje liczbę na tekst: „Wiek” i 30 zwraca Wiek 30 | Podnosi błąd niezgodności typu |
| Dwa ciągi liczbowe | „10” i „5” zwracają 105 | „10” + „5” może dodać i zwrócić 15 |
| Wartość null | Traktuje Null jako pusty ciąg | Zwraca wartość Null i odrzuca cały wynik |
💡 Wskazówka: Zawsze używaj znaku ampersand do łączenia i zarezerwuj znak plus dla działania arytmetyczne. Umieść spację przed i po znaku ampersand, ponieważ zapis Total& jest odczytywany przez VBA jako znak deklaracji typu Long.
Funkcje manipulacji ciągami VBA
Manipulacja ciągami VBA jest ważnym elementem w Excel VBA do programowania makr i operacje na ciągach. Excel udostępnia różne typy funkcji VBA String Manipulation, takie jak:
- Lewa: jest używany dotract znaków z lewej strony ciągu
- Prawa: jest używany dotracznaków z prawej strony ciągu
- Średni: jest używany dotracpodciąg z środka ciągu
- Len: służy do znalezienia długości łańcucha
- Instr: służy do znalezienia pozycji podciągu w ciągu
- Susz: służy do usuwania spacji z obu końców ciągu znaków
- zastąpić: służy do zamiany każdego wystąpienia jednego podciągu na inny
- UCase / LCase: służą do konwersji ciągu na wielkie lub małe litery
Poniższa tabela przedstawia składnię każdej funkcji wraz z przykładem jej działania, dzięki czemu możesz skopiować wzór bezpośrednio do makra.
| Funkcjonować | Składnia | Przykład | Wydajność |
|---|---|---|---|
| Lewa | Lewo(ciąg, długość) | Lewy(“lipiec-2015”, 3) | LIP |
| Prawa | Prawo(ciąg, długość) | Prawo(“lipiec-2015”, 4) | 2015 |
| Średni | Środek(struna, początek, długość) | Środek(“lipiec-2015”, 5, 4) | 2015 |
| Len | Len(ciąg) | Len(“lipiec-2015”) | 8 |
| Instr | InStr(start, string, podstring) | InStr(1, „lip-2015”, „-”) | 4 |
| Susz | Przytnij(ciąg) | Przycinać(" Guru99 ") | Guru99 |
| zastąpić | Zamień(ciąg, znajdź, zamień) | Zamień („lipiec 2015 r.”, „-”, „/”) | Lipiec/2015 |
| UCase | UCase(ciąg) | UCase(“guru99”) | GURU99 |
Poniższe makro łączy kilka z tych funkcji, aby odtworzyć etykietę daty z jej części.
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
Uruchomienie makra wyświetla wynik z lipca 2015 r. Każda funkcja zwraca nową wartość i pozostawia oryginalny ciąg znaków nienaruszony, dlatego wyniki można bezpiecznie połączyć w jednym wyrażeniu.
Wszystkie te funkcje działają na jednym ciągu znaków na raz. Gdy pojedyncza wartość zawiera całą listę, dwie inne funkcje radzą sobie z nią lepiej.
Jak dzielić i łączyć ciągi znaków w VBA
Dane wklejone do Excela często pojawiają się jako jedna długa wartość z separatorem między poszczególnymi elementami, na przykład „Pepsi, Coca-Cola, Fanta, Sok”. Odczyt tych danych za pomocą Mid i InStr jest powolny i niestabilny. VBA oferuje dopasowaną parę funkcji do tego zadania.
Split przyjmuje ograniczony ciąg znaków i zwraca tablicę zawierającą od zera elementy w jednym elemencie. Dołącz do rejestru Działa odwrotnie, pobierając tablicę i zwracając pojedynczy ciąg znaków z separatorem między elementami. Należy pamiętać, że funkcja Join działa na tablicy, a nie na dwóch oddzielnych ciągach znaków.
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
Pętla zapisuje każdy napój w osobnym wierszu arkusza kalkulacyjnego, a w polu komunikatu wyświetla się Pepsi | Coca-Cola | Fanta | Sok. Trzy punkty sprawiają, że ten wzorzec jest niezawodny w kodzie produkcyjnym:
- Wynik od zera: Funkcja Split zawsze zwraca tablicę numerowaną od 0, niezależnie od ustawienia Option Base, dlatego pętlę należy obsługiwać za pomocą LBound i UBound, a nie za pomocą stałej liczby.
- Deklaracja jako String(): Przypisz wynik do dynamicznej tablicy ciągów znaków. Zadeklarowanie stałego rozmiaru powoduje błąd kompilacji.
- Puste dane wejściowe: Podzielenie pustego ciągu zwraca tablicę bez elementów, dlatego przed odczytaniem Items(0) należy przeprowadzić test za pomocą UBound.
Nawet po wybraniu właściwej funkcji, kod łańcuchowy zawodzi w kilku przewidywalnych przypadkach.
Typowe błędy w ciągach VBA i jak je naprawić
Większość błędów w ciągach znaków w programie Excel VBA wynika z krótkiej listy przyczyn. Rozpoznanie symptomu oszczędza długą sesję debugowania.
- Niezgodność typów podczas łączenia: Między tekstem a liczbą zastosowano znak plus. Zastąp go znakiem ampersand, który automatycznie przekonwertuje liczbę.
- InStr zwraca 0: Podciąg nie został znaleziony. Funkcja InStr zwraca 0 zamiast -1 w przypadku błędu, dlatego przed przekazaniem wyniku do Mid należy sprawdzić, czy występuje wartość większa od zera.
- Nieprawidłowe wywołanie procedury w Mid lub Left: Żądana długość jest ujemna lub pozycja początkowa jest mniejsza niż 1. Zabezpiecz wywołanie za pomocą Len, aby długość nigdy nie przekroczyła ciągu.
- Porównania, które powinny pasować, ale tak nie jest: Spacje końcowe z importowanych danych przerywają równość. Zawiń obie strony w Trim i użyj StrComp, gdy wielkość liter ma być ignorowana.
- Tekst, który nie będzie liczbą: Wartość taka jak „1,200” nie przechodzi obliczeń arytmetycznych z powodu separatora. Usuń ją za pomocą funkcji Replace przed konwersją za pomocą CLng.
Pobierz Excel zawierający powyższy kod
Pobierz powyższy plik Excel Code


