Při práci ve VBA často potřebujete porovnávat řetězce. Ve výchozím stavu, VBA rozlišuje velká a malá písmena, takže pokud porovnáte dva stejné texty a jeden z nich je s velkými písmeny a druhý s malými písmeny, VBA je bude považovat za různé texty. V tomto kurzu uvidíte, jak zabránit tomu, aby VBA rozlišoval velká a malá písmena.
Díky tomu je VBA malá a velká písmena
Chcete-li, aby VBA nerozlišovala malá a velká písmena, musíte zadat Možnost Porovnat text na začátku modulu. Nejprve se podíváme na standardní chování VBA bez této sady možností. Toto je kód:
123456789 | Pokud Sheet1.Range ("A1"). Hodnota = Sheet1.Range ("B1"). Hodnota PakMsgBox „Dva texty jsou stejné“JinýMsgBox „Dva texty jsou různé“Konec If |
V příkladu chceme porovnat řetězce z A1 a B1. Pokud jsou řetězce stejné, vrátíme okno se zprávou se zprávou „Dva texty jsou stejné“. Pokud si nejsou rovni, vrátíme zprávu „Dva texty jsou různé.
Obrázek 1. Porovnání řetězců bez textu pro porovnání možností
Jak vidíte na obrázku, oba texty jsou stejné, ale první je napsán velkými písmeny, zatímco druhý malými písmeny. Z tohoto důvodu je VBA považuje za jiné a vrátil tuto zprávu.
1234567891011 | Možnost Porovnat textPublic Sub CaseSensitiveTest ()Pokud Sheet1.Range ("A1"). Hodnota = Sheet1.Range ("B1"). Hodnota PakMsgBox „Dva texty jsou stejné“JinýMsgBox „Dva texty jsou různé“Konec IfEnd Sub |
Nyní přidáme text pro porovnání možností na začátek modulu a uvidíme rozdíl. Zde je kód. Spustíme kód na stejném příkladu:
Obrázek 2. Porovnání řetězců s textem pro porovnání možností
Nyní, když je nastaven text pro porovnání možností, VBA začne rozlišovat malá a velká písmena a považuje tyto dva texty za stejné.
Porovnání textu
Pokud nedeklarujete Možnost Porovnat text, můžete převést případy řetězců, abyste mohli porovnávat malá a velká písmena. To je možné pomocí funkce UCase, LCase nebo StrConv. Více se o tom můžete dozvědět zde: VBA Horní, Dolní a Správná funkce velkých a malých písmen