VBA Порівняйте рядки - StrComp

У VBA можна порівняти два рядки за допомогою StrComp функція. У цьому підручнику ви дізнаєтесь, як використовувати цю функцію з різними методами порівняння.

Якщо ви хочете дізнатися, як використовувати оператор типу VBA для порівняння неточних збігів, натисніть тут: Оператор VBA, подібний до оператора.

Якщо ви хочете дізнатися, як використовувати оператори порівняння, натисніть тут: Оператори порівняння VBA - не дорівнює & Більше

Використання функції StrComp для порівняння двох рядків

The StrComp Функція приймає два рядки та метод порівняння як аргументи. Існує 3 методи порівняння:

  • vbBinaryCompare - порівнює два рядки двійкових (з урахуванням регістру);
  • vbTextCompare - порівнює два рядки як тексти (без урахування регістру);
  • vbDatabaseCompare - цей метод доступний лише в Microsoft Access, а не у VBA.

За замовчуванням функція використовує двійковий метод. Якщо ми опустимо цей аргумент, функція враховуватиме регістр.

Функція повертає такі результати:

  • 0 - якщо рядки рівні;
  • -1 - якщо рядок 1 менший за рядок 2;
  • 1 - якщо рядок 1 більший за рядок 2;
  • Null - якщо один із рядків порожній.

Ось приклад коду:

123 Dim intResult As IntegerintResult = 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