Сравнение строк VBA - StrComp

В 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.

wave wave wave wave wave