Ve VBA můžete porovnat dva řetězce pomocí StrComp funkce. V tomto kurzu se naučíte používat tuto funkci s různými metodami porovnávání.
Pokud se chcete dozvědět, jak používat operátor jako VBA k porovnávání nepřesných shod, klikněte sem: Operátor jako VBA.
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í funkce StrComp
The StrComp funkce bere dva řetězce a metodu porovnání jako argumenty. Existují 3 způsoby srovnání:
- vbBinaryCompare - porovnává dva řetězce binární (rozlišují velká a malá písmena);
- vbTextCompare - porovnává dva řetězce jako texty (nerozlišuje velká a malá písmena);
- vbDatabaseCompare - tato metoda je k dispozici pouze v aplikaci Microsoft Access, nikoli ve VBA.
Ve výchozím nastavení používá funkce binární metodu. Pokud tento argument vynecháme, funkce bude rozlišovat velká a malá písmena.
Funkce vrací následující výsledky:
- 0 - pokud jsou řetězce stejné;
- -1 - pokud je řetězec 1 menší než řetězec 2;
- 1 - pokud je řetězec 1 větší než řetězec 2;
- Null - pokud je jeden z řetězců prázdný.
Zde je ukázkový kód:
123 | Dim intResult As IntegerintResult = StrComp („počítač“, „počítač“) |
V tomto příkladu chceme zkontrolovat, zda řetězce "Počítač" a "Počítač" jsou stejné, pomocí výchozí metody porovnání (binární). Výsledek funkce je v souboru intVýsledek proměnná. Jak vidíte na obrázku, oba řetězce jsou si rovny, proto intVýsledek má hodnotu 0.
Obrázek 1. Použití funkce StrComp s binární metodou ve VBA
Použití funkce StrComp s binární a textovou metodou
Nyní uvidíte rozdíl mezi použitím binární a textové metody. Binární metoda má pro každý znak binární číslo, takže velká a malá písmena jsou v této metodě různé znaky. Na druhé straně textová metoda považuje „S“ a „s“ za stejná písmena. Pokud chcete, aby funkce nerozlišovala malá a velká písmena, musíte nastavit třetí argument na vbBinaryCompare. Zde je kód:
123456 | Dim intResult1 jako celé čísloDim intResult2 jako celé číslointResult1 = StrComp ("Počítač", "CompuTer")intResult2 = StrComp ("Počítač", "CompuTer", vbTextCompare) |
Chceme porovnat řetězce "Počítač" a "Počítač", pomocí obou metod.
V proměnné intResult1, získáme hodnotu pomocí binární metody, zatímco intResult2 získá hodnotu textovou metodou. Můžete vidět hodnoty těchto dvou proměnných:
Obrázek 2. Použití funkce StrComp s binární a textovou metodou
Hodnota intResult1 je 1, což znamená, že dva řetězce jsou pro binární metodu odlišné. U textové metody jsou tyto dva řetězce stejné, takže hodnota intResult2 je 0.