Ve VBA můžete porovnat dva řetězce pomocí Jako operátor pro kontrolu shody řetězců. V tomto kurzu se naučíte používat tento operátor s různými vzory.
Pokud se chcete dozvědět, jak porovnávat řetězce ve VBA, klikněte sem: Porovnání řetězců VBA - StrComp
Chcete -li se naučit používat srovnávací operátory, klikněte sem: Srovnávací operátory VBA - nerovná se a další
Porovnání dvou řetězců pomocí operátoru Like
Pomocí operátoru Like můžeme zkontrolovat, zda řetězec začíná konkrétním textem, obsahuje jej atd. Ve výchozím nastavení je Jako operátor porovnává znaky pomocí binární metody. To znamená, že operátor rozlišuje velká a malá písmena. Pokud chcete, aby nerozlišovala malá a velká písmena, musíte zadat Možnost Porovnat text v horní části modulu. Pomocí této metody Jako operátor považuje „S“ a „s“ za stejné znaky. V našich příkladech použijeme výchozí porovnání rozlišující malá a velká písmena.
Pokud shoda existuje, Jako operátor v důsledku toho vrátí hodnotu True nebo False, jinak.
Nejprve se podíváme na jednoduchý příklad, kde chceme zkontrolovat, zda naše řetězcová proměnná začíná pan. Chcete -li to provést, musíte na konec odpovídajícího textu vložit hvězdičku (*) (Pan*). Zde je kód:
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim blnVýsledek jako booleovskýstrName = "Pan Michael James"Pokud strName jako „Pan*“ TakblnResult = TrueJinýblnResult = FalseKonec IfEnd Sub |
V tomto příkladu chceme zkontrolovat, zda řetězec strName začíná s pan a v proměnné vraťte hodnotu True nebo False blnVýsledek.
Nejprve nastavíme hodnotu strName na Pane Michael James:
1 | strName = "Pan Michael James" |
Poté použijeme Jako operátor v příkazu If:
12345 | Pokud strName jako „Pan*“ TakblnResult = TrueJinýblnResult = FalseKonec If |
Jako strName začíná s pan, blnVýsledek vrací True:
Obrázek 1. Pomocí operátoru Like zkontrolujte, zda řetězec začíná určitými znaky
Použití operátoru Like s různými odpovídajícími vzory
Operátor Like může kontrolovat shodu dvou řetězců na základě různých vzorů. Zde je seznam možných odpovídajících vzorů:
Kód vzoru |
Typ shody |
* | Odpovídá 0 nebo více znakům |
? | Odpovídá jednomu znaku |
# | Odpovídá jedné číslici |
[znaky] | Odpovídá jednomu znaku ze seznamu znaků |
[A-Z] | Odpovídá libovolnému velkému písmenu z abecedy |
[A-Za-z] | Odpovídá libovolnému znaku z abecedy |
[! znaky] | Odpovídá jednomu znaku bez seznamu znaků |
Nyní můžeme vidět, jak tyto vzory použít v kódu. Zde je příklad pro více vzorů:
Odpovídající jednomu znaku:
1234567 | strText1 = "ABCDE"Pokud strText1 jako „AB? DE“, pakblnResult1 = PravdaJinýblnResult1 = FalseKonec If |
Odpovídající jedné číslici:
1234567 | strText2 = "AB7DE"Pokud strText2 jako „AB#DE“, pakblnResult2 = PravdaJinýblnResult2 = FalseKonec If |
Odpovídající libovolnému velkému písmenu z abecedy:
1234567 | strText3 = "ABCDE"Pokud strText3 jako „AB [A-Z] DE“, pakblnResult3 = PravdaJinýblnResult3 = FalseKonec If |
Neodpovídá žádnému velkému písmenu z abecedy:
1234567 | strText4 = "AB7DE"Pokud strText4 jako „AB [! A-Z] DE“ PakblnResult4 = PravdaJinýblnResult4 = FalseKonec If |
Odpovídající libovolný znak z abecedy (velká nebo malá):
1234567 | strText5 = "ABcDE"Pokud strText5 jako „AB [A-Za-z] DE“ PakblnResult5 = PravdaJinýblnResult5 = FalseKonec If |
Když spustíte kód, uvidíte, že Jako operátor vrací True in blnVýsledek proměnné pro každé srovnání:
Obrázek 2. Použití operátoru Like s různými shodnými vzory