W tym samouczku zademonstrujemy, jak używać funkcji Replace VBA do zastępowania ciągów tekstu.
Zamień funkcję
Funkcja VBA Replace zwraca ciąg z wykonanymi podstawieniami. Przy użyciu parametrów opcjonalnych nowy ciąg może zaczynać się w pozycji określonej przez start i kończyć się na końcu oryginalnego ciągu.
Zamień VBA Zastąp podciąg
Funkcja VBA Replace może służyć do zastępowania dowolnego znalezionego podciągu, w każdej znalezionej części.
12345678910111213141516 | Sub ReplaceExample_1()MsgBox Replace("ABCABCABC", "A", "!")'Wynik to: "!BC!BC!BC"MsgBox Replace("Lubię różowy, czerwony i czarny", "różowy", "fioletowy")Wynik: „Lubię fiolet, czerwień i czerń”MsgBox Replace("A, B, C, A, B, C, A, B, C", ", ", ",")Wynik: „ABCABCABC”MsgBox Replace("ABCABCABC", "ABC", "!")Wynik: „!!!”MsgBox Replace("ABCABCABC", "ABc", "!")Wynik: „ABCABCABC”MsgBox Replace("ABCABCABC", "ZBC", "!")Wynik: „ABCABCABC”Napis końcowy |
VBA Zastąp pozycję początkową
Funkcja VBA Replace może służyć do zastępowania dowolnego znalezionego podciągu, w każdej znalezionej części. Jeśli przypiszemy pozycję początkową, wynikiem będzie część oryginalnego ciągu po tym punkcie początkowym.
12345678910111213 | Sub ZamieńPrzykład_2()MsgBox Replace("ABCABCABC", "A", "123") 'Wynik: "123BC123BC123BC"MsgBox Replace("ABCABCABC", "A", "123", 2) 'Wynik: "BC123BC123BC"MsgBox Replace("ABCABCABC", "A", "123", 7) 'Wynik: "123BC"MsgBox Replace("ABCABCCABC", "A", "123", 8) 'Wynik: "BC"MsgBox Replace("ABCABCABC", "ABC", "!@") 'Wynik: "!@!@!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 2) 'Wynik: "BC!@!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 6) 'Wynik: "C!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 7) 'Wynik: "!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 8) 'Wynik: "BC"Napis końcowy |
VBA Zastąp tylko kilka wystąpień
Funkcja VBA Replace może służyć do zastępowania dowolnego znalezionego podciągu, w każdej znalezionej części. Opcjonalnie możemy zdecydować, ile wystąpień należy zastąpić.
123456789101112 | Sub ReplaceExample_3()MsgBox Replace("ABCABCABC", "A", "12") 'Wynik: "12BC12BC12BC"MsgBox Replace("ABCABCABC", "A", "12", , 1) 'Wynik: "12BCABCABC"MsgBox Replace("ABCABCABC", "A", "12", , 2) 'Wynik: "12BC12BCABC"MsgBox Replace("ABCABCABC", "A", "12", , 3) 'Wynik: "12BC12BC12BC"MsgBox Replace("ABCABCABC", "A", "12", , 5) 'Wynik: "12BC12BC12BC"MsgBox Replace("ABCABCABC", "A", "12", 3, 1)Wynik to: „C12BCABC”„Zamieniliśmy A na 12, 1 raz, zaczynając od pozycji 3 oryginalnego ciągu.Napis końcowy |
VBA Zamień wielkość liter
Funkcja zastępowania VBA domyślnie rozróżnia wielkość liter. Możesz zmienić to zachowanie, aby nie uwzględniać wielkości liter za pomocą opcjonalnego parametru (vbTextPorównaj). W takim przypadku należy również zdefiniować pozycję początkową wyszukiwania.
12345678910111213 | Sub ReplaceExample_4()MsgBox Replace("ABcABCABc", "ABc", "12")Wynik to: „12ABC12”MsgBox Replace("ABcABCABc", "ABc", "12", , , vbTextCompare)Wynik to: „121212”'Kiedy używamy vbTextCompare, musimy dodać 2 inne opcjonalne argumenty:„zacznij i policz”MsgBox Replace("ABcABCABcABc", "ABc", "12", 3, 1)Wynik: „cABC12ABc”„Zaczął od pozycji 3 i zastąpił ABC tylko 1 raz.Napis końcowy |
Możesz również wykonać zamianę bez rozróżniania wielkości liter, dodając Option Compare Text na górze modułu:
1 | Opcja Porównaj tekst |
VBA Zastąp podwójne cytaty
Funkcja Zamień VBA może zastąpić znak podwójnego cudzysłowu używany do rozgraniczenia początku i końca ciągu.
Funkcja VBA Chr może zwrócić znak z jego numeru w zestawie znaków.
1 | MsgBox Chr(34) 'Wynik to: " |
Lub
1 | MsgBox Chr(64) 'Wynik: @ |
Podwójne cudzysłowy mogą być używane w funkcji Zamień VBA za pomocą „””” lub funkcji VBA Chr(34).
12345678910111213 | Sub ReplaceExample_5()Dim StrEx jako ciągStrEx = "AB""AB"""MsgBox StrEx 'Wynik to: AB"AB"MsgBox Replace(StrEx, Chr(34), "12")„Wynik to: AB12AB12”MsgBox Replace(StrEx, """", "DQ")Wynik: „ABDQABDQ”Napis końcowy |
VBA Zastąp linię podziału w komórce
Funkcja zastępowania VBA może znaleźć znak specjalny linii podziału w komórce i usunąć go lub zastąpić znakiem spacji. Znak specjalny linii podziału można wprowadzić w komórce za pomocą skrótu klawiaturowego Alt+Enter i można go używać w kodzie VBA z numerem zestawu znaków za pomocą funkcji VBA Chr(10).
1234567891011121314 | Sub ReplaceExample_6()Dim StrEx As String 'Zdefiniuj zmienną łańcuchową'Odczytaj wartość komórki A2 w arkuszu Arkusz1StrEx = ThisWorkbook.Worksheets("Arkusz1").Range("A2").Value'Znak linii przerwania wprowadzony za pomocą Alt+Enter to Chr(10) i jest niewidoczny.'Ta linia kodu zastępuje ten znak spacjąStrEx = Zamień(StrEx, Chr(10), " ")'Zapisz zastąpioną wartość w komórce B2 w arkuszu Arkusz1ThisWorkbook.Worksheets("Arkusz1").Range("B2").Value = StrExNapis końcowy |