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