Vo VBA môžete porovnávať dva reťazce pomocou StrComp funkciu. V tomto návode sa naučíte používať túto funkciu pri rôznych porovnávacích metódach.
Ak sa chcete dozvedieť, ako používať operátor VBA na porovnávanie nepresných zápasov, kliknite sem: Operátor ako VBA.
Ak sa chcete dozvedieť, ako používať porovnávacie operátory, kliknite sem: Porovnávacie operátory VBA - nerovná sa a ďalšie
Použitie funkcie StrComp na porovnanie dvoch reťazcov
The StrComp funkcia berie ako argumenty dva reťazce a metódu porovnávania. Existujú 3 spôsoby porovnania:
- vbBinaryCompare - porovnáva dva reťazce binárne (rozlišujú sa malé a veľké písmená);
- vbTextCompare - porovnáva dva reťazce ako texty (nerozlišuje malé a veľké písmená);
- vbDatabaseCompare - táto metóda je k dispozícii iba v programe Microsoft Access a nie vo VBA.
Štandardne funkcia používa binárnu metódu. Ak tento argument vynecháme, funkcia bude rozlišovať malé a veľké písmená.
Funkcia vracia nasledujúce výsledky:
- 0 - ak sú reťazce rovnaké;
- -1 - ak je reťazec 1 menší ako reťazec 2;
- 1 - ak je reťazec 1 väčší ako reťazec 2;
- Null - ak je jeden z reťazcov prázdny.
Tu je ukážkový kód:
123 | Dim intResult As IntegerintResult = StrComp („počítač“, „počítač“) |
V tomto prípade chceme skontrolovať, či ide o reťazce "Počítač" a "Počítač" sú rovnaké, pomocou predvolenej metódy porovnávania (binárne). Výsledok funkcie je v intResult premenná. Ako môžete vidieť na obrázku, obidva reťazce sú rovnaké, preto intResult má hodnotu 0.
Obrázok 1. Použitie funkcie StrComp s binárnou metódou vo VBA
Použitie funkcie StrComp s binárnou a textovou metódou
Teraz uvidíte rozdiel medzi použitím binárnej a textovej metódy. Binárna metóda má pre každý znak binárne číslo, takže veľké a malé písmená sú v tejto metóde odlišné znaky. Na druhej strane textová metóda považuje „S“ a „s“ za rovnaké písmená. Ak chcete, aby funkcia nerozlišovala malé a veľké písmená, musíte nastaviť tretí argument na vbBinaryCompare. Tu je kód:
123456 | Dim intResult1 ako celé čísloDim intResult2 ako celé číslointResult1 = StrComp („počítač“, „počítač“)intResult2 = StrComp („počítač“, „CompuTer“, vbTextCompare) |
Chceme porovnať reťazce "Počítač" a „CompuTer“, pomocou oboch metód.
V premennej intResult1, získame hodnotu pomocou binárnej metódy, zatiaľ čo intResult2 získa hodnotu textovou metódou. Môžete vidieť hodnoty týchto dvoch premenných:
Obrázok 2. Použitie funkcie StrComp s binárnou a textovou metódou
Hodnota intResult1 je 1, čo znamená, že dva reťazce sú pre binárnu metódu odlišné. Pre textovú metódu sú tieto dva reťazce rovnaké, takže hodnota intResult2 je 0.