Ten samouczek pokaże, jak używać symboli wieloznacznych w VBA.
Symbole wieloznaczne są używane we wszystkich językach programowania i aplikacjach bazodanowych, takich jak SQL Server. Symbol wieloznaczny można zdefiniować jako symbol używany do zastąpienia jednego lub większej liczby znaków w ciągu tekstowym. Na przykład ten ciąg tekstowy - "mo*" - znajdzie słowa mama, mysz, łoś, mamusia itp.; podczas gdy ten ciąg tekstowy „mo?” czy znajdzie tylko słowo mama jako symbol wieloznaczny? zastępuje tylko jeden znak.
Używamy symboli wieloznacznych z operatorem Like, który jest łatwiejszą alternatywą dla VBA Regex.
Używanie Asterix (*) Wildcard w VBA
Symbol wieloznaczny Asterix zastępuje jeden lub więcej znaków w ciągu VBA.
Spójrzmy na następujący zakres komórek w Excelu:
Używając symbolu wieloznacznego Asterix w naszym kodzie VBA, możemy znaleźć wszystkie imiona zaczynające się na „M” i zmienić kolor tekstu na czerwony.
12345678 | Sub CheckForM()Dim x As IntegerDla x = 3 do 8Jeśli zakres("B" i x).Wartość jak "M*" WtedyZakres("B" & x). Kolor czcionki = vbRedZakończ, jeśliNastępny xNapis końcowy |
Dlatego przeszukaliśmy zakres i znaleźliśmy wszystkie imiona zaczynające się na literę M, ponieważ nasz ciąg znaków wieloznacznych to „M*”
Wynik uruchomienia powyższego kodu pokazano poniżej.
Gdybyśmy mieli użyć ciągu znaków wieloznacznych „Ma*” - zmieniłyby się tylko imiona w B3 i B4.
Używanie znaku zapytania (?) Wildcard w VBA
Znak zapytania zastąpi pojedynczy znak w ciągu VBA.
Rozważ następujące dane:
Możemy użyć ciągu znaków wieloznacznych „?im”, aby znaleźć imiona kończące się na „im”
12345678 | Sub CheckForIM()Dim x As IntegerDla x = 3 do 8If Range("B" & x).Value Like "?im" ThenZakres("B" & x). Kolor czcionki = vbRedZakończ, jeśliNastępny xNapis końcowy |
Wynik uruchomienia tego kodu jest pokazany poniżej:
Używanie [listy znaków] jako symbolu wieloznacznego
Powyższy przykład można nieco zmodyfikować, aby umożliwić nam użycie znaku zapytania, oprócz listy dozwolonych znaków. Ciąg znaków wieloznacznych można zatem zmienić na „?[e-i]m”, gdzie pierwszy znak może być dowolnym, drugim znakiem musi być znak między e i i, a ostatnią literą musi być znak „m”. Dozwolone są tylko 3 znaki.
12345678 | Test podrzędnej listyznaków()Dim x As IntegerDla x = 3 do 8If Range("B" & x).Value Like "?[e-i]m" ThenZakres("B" & x). Kolor czcionki = vbRedZakończ, jeśliNastępny xNapis końcowy |
Wynik tego kodu byłby następujący:
Programowanie VBA | Generator kodu działa dla Ciebie!
Używanie skrótu (#) Wildcard w VBA
Symbol wieloznaczny skrótu (#) zastępuje pojedynczą cyfrę w ciągu VBA. Możemy dopasować od 0 do 9.
12345678910 | Sub SprawdźNumer()Dim x jako liczba całkowita, y jako liczba całkowitaDla x = 3 do 8Dla y = 2 do 5Jeśli ActiveSheet.Cells(x, y) Jak "##" WtedyActiveSheet.Cells(x, y).Czcionka.Kolor = vbRedZakończ, jeśliNastępny takNastępny xNapis końcowy |
Powyższy kod przejdzie przez wszystkie komórki w zakresie („B3:E8”) i zmieni kolor tekstu w komórce na CZERWONY, jeśli w tej komórce zostanie znaleziona liczba dwucyfrowa.
W poniższym przykładzie kod zmieni numer tylko wtedy, gdy ostatnią cyfrą jest 9.
12345678910 | Sub SprawdźDla9()Dim x jako liczba całkowita, y jako liczba całkowitaDla x = 3 do 8Dla y = 2 do 5Jeśli ActiveSheet.Cells(x, y) Jak „#9” WtedyActiveSheet.Cells(x, y).Czcionka.Kolor = vbRedZakończ, jeśliNastępny takNastępny xNapis końcowy |