В VBA вы можете сравнить две строки, используя StrComp функция. В этом руководстве вы узнаете, как использовать эту функцию с различными методами сравнения.
Если вы хотите узнать, как использовать оператор VBA Like для сравнения неточных совпадений, щелкните здесь: Оператор Like VBA.
Если вы хотите узнать, как использовать операторы сравнения, щелкните здесь: Операторы сравнения VBA - не равно и др.
Использование функции StrComp для сравнения двух строк
В StrComp функция принимает в качестве аргументов две строки и метод сравнения. Есть 3 метода сравнения:
- vbBinaryCompare - сравнивает две двоичные строки (с учетом регистра);
- vbTextCompare - сравнивает две строки как текст (без учета регистра);
- vbDatabaseCompare - этот метод доступен только в Microsoft Access, но не в VBA.
По умолчанию функция использует двоичный метод. Если мы опустим этот аргумент, функция будет чувствительна к регистру.
Функция возвращает следующие результаты:
- 0 - если строки равны;
- -1 - если строка 1 меньше строки 2;
- 1 - если строка 1 больше строки 2;
- Null - если одна из строк пуста.
Вот пример кода:
123 | Dim intResult как целое числоintResult = StrComp («Компьютер», «Компьютер») |
В этом примере мы хотим проверить, «Компьютер» а также «Компьютер» равны, используя метод сравнения по умолчанию (двоичный). Результат функции находится в intResult Переменная. Как вы можете видеть на изображении, обе строки равны, поэтому intResult имеет значение 0.
Изображение 1. Использование функции StrComp с двоичным методом в VBA
Использование функции StrComp с двоичным и текстовым методами
Теперь вы увидите разницу между использованием двоичного и текстового методов. Двоичный метод имеет двоичное число для каждого символа, поэтому в этом методе прописные и строчные буквы - разные символы. С другой стороны, текстовый метод считает «S» и «s» одними и теми же буквами. Если вы хотите сделать функцию нечувствительной к регистру, вам нужно установить для третьего аргумента значение vbBinaryCompare. Вот код:
123456 | Dim intResult1 как целое числоDim intResult2 как целое числоintResult1 = StrComp («Компьютер», «CompuTer»)intResult2 = StrComp («Компьютер», «CompuTer», vbTextCompare) |
Мы хотим сравнить строки «Компьютер» а также «Компьютер», используя оба метода.
В переменной intResult1, мы получим значение бинарным методом, а intResult2 получит значение текстовым методом. Вы можете увидеть значения этих двух переменных:
Изображение 2. Использование функции StrComp двоичным и текстовым методами.
Значение intResult1 равно 1, что означает, что для двоичного метода две строки различны. Для текстового метода эти две строки равны, поэтому значение intResult2 равно 0.