Сравнение на VBA Operators: Не е равно, Less от или равно на
⚡ Умно обобщение
Сравнение на VBA OperaОператорите проверяват една стойност спрямо друга и връщат True или False. Тази страница дефинира шестте оператора, показва ги в рамките на If оператор, обяснява как се сравняват текст и дати и изброява грешките, които водят до грешни резултати.

Сравнение на VBA Operaтори
Това са оператори, които се използват за сравняване на стойности. Операторите за сравнение включват равно на, по-малко от, по-голямо от и не е равно на.
Операторите за сравнение се използват за сравняване на стойности с цел валидиране. Да кажем, че разработватеping просто приложение за точка на продажба. В това приложение искате да валидирате въведените стойности, преди да осчетоводите. В такива случаи можете да използвате оператори за сравнение. Този оператор ще провери спрямо отрицателните числа или ще се увери, че платената сума не надвишава фактурираната сума. Операторите за сравнение са полезни в такива ситуации.
Всяко сравнение връща една от две стойности, True или False, и никога число. Този резултат е това, върху което действа If операторът.
Следващата таблица изброява операторите за сравнение, дефинирани в VBA.
| OperaTor | Descriptйон |
|---|---|
| = | Равно: проверява дали две стойности са равни. Използва се и като оператор за присвояване |
| < | Less отколкото: проверява дали стойността отляво е по-малка от стойността отдясно |
| > | По-голямо от: проверява дали стойността отляво е по-голяма от стойността отдясно |
| <> | Не е равно на: проверява дали две стойности са различни една от друга |
| <= | Less отколкото или равно на: проверява дали стойността отляво е по-малка или същата като стойността отдясно |
| >= | По-голямо или равно на: проверява дали стойността отляво е по-голяма или равна на стойността отдясно |
Виждането на всеки оператор, приложен към две променливи, прави върнатия резултат по-лесен за предвиждане.
Сравнение на VBA Operaторове с пример
Следващата таблица показва Excel VBA сравнение Operaторове с примери и резултат.
| S / N | OperaTor | Пример | Продукция |
|---|---|---|---|
| 1 | = | Ако x = z Тогава | Връща true, ако са равни, в противен случай връща false |
| 2 | < | Ако x < z Тогава | Връща true, ако x е по-малко от z, в противен случай връща false |
| 3 | > | Ако x > z Тогава | Връща true, ако x е по-голямо от z, в противен случай връща false |
| 4 | <> | Ако x <> z Тогава | Връща true, ако не са равни, в противен случай връща false |
| 5 | <= | Ако x <= z Тогава | Връща true, ако x е по-малко или равно на z, в противен случай връща false |
| 6 | >= | Ако x >= z, тогава | Връща true, ако x е по-голямо или равно на z, в противен случай връща false |
Примерен изходен код
Еднакво сравнение OperaTor
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
ТУК,
- „Ако 2 = 1, тогава… Иначе… Край, ако“ използва оператора if, за да оцени условието „2 = 1“
- „MsgBox... " Това е вградена функция, която показва прозорец със съобщения.
- Първият параметър „True“ или „False“ е това, което ще се покаже в полето за съобщения. В нашия пример 2 не е равно на 1, следователно ще покаже „false“ в кутията за съобщения.
- Вторият параметър „vbOKOnly“ е бутонът, който се показва в полето за съобщения
- Третият параметър „Равен Operator” е заглавието на полето за съобщение.
Изпълнението на горния код дава следните резултати
Този единичен тест е най-простата форма. Истинските макроси комбинират сравнения и се разклоняват между няколко резултата.
Как да използваме сравнение Operaтори в If оператор
Операторът за сравнение рядко е полезен сам по себе си. Резултатът му „Вярно“ или „Невярно“ се подава към структура за вземане на решения, а операторът „Ако“ е този, който ще използвате най-често. Примерът по-долу оценява резултат, съхраняван в клетка A1, и записва резултата до него.
Sub GradeScore() Dim Score As Long Score = Sheet1.Range("A1").Value If Score >= 90 Then Sheet1.Range("B1").Value = "Distinction" ElseIf Score >= 50 Then Sheet1.Range("B1").Value = "Pass" ElseIf Score < 0 Then MsgBox "A score cannot be negative", vbCritical, "Invalid Entry" Else Sheet1.Range("B1").Value = "Fail" End If End Sub
Макросът прочита резултата веднъж, след което го тества спрямо три условия подред. Четири точки обясняват защо се държи по начина, по който се държи.
- Поръчката е важна: VBA спира на първия клон, който връща True. Резултат >= 50 преди Резултат >= 90 би етикетирал всеки висок резултат като минал.
- Иначе е общото: Всяка стойност, която не премине през всички предишни тестове, се предава на Else, така че никой вход не остава необработен.
- Без верижно свързване: VBA не може да чете 0 <= Резултат <= 100Пишете Ако резултатът е >= 0 и резултатът е <= 100, тогава използване на логически оператори вместо.
- Същият тест, други структури: Идентичното условие управлява Do While и Select Case, така че операторите се прехвърлят към всеки цикъл, който пишете.
💡 Съвет: Декларирайте променливата с числов тип, както е показано с Дим Резултат ДоколкотоАко стойността остане Вариант, съдържащ текст, „9“ > „10“ връща True, защото сравнението се извършва символ по символ.
Сравняване на текст и дати във VBA
Numbers сравнявайте точно както предполага аритметиката, но текстът и датите следват свои собствени правила и двете изненадват начинаещите.
Низовете се сравняват по един символ, използвайки позицията им за сортиране, така че „Apple“ < „Banana“ връща True. По подразбиране сравнението е чувствително към главни и малки букви, което означава „guru99“ = „Guru99” връща False. Поставяне Опция Сравнете текст в горната част на модула прави всяко сравнение на низове в този модул да игнорира главни и малки букви. За единичен тест без промяна на модула използвайте StrComp с аргумента vbTextCompare.
Датите се съхраняват като серийни номера, считано от 30 декември 1899 г., така че те се сравняват директно със същите шест оператора. Ако КрайнаДата < Дата Тогава правилно открива просрочен елемент, защото Date връща текущата системна дата като същия вид сериен номер. Единственият капан е датата, съхранявана като текст: „01/02/2026“, прочетена от импортиран файл, е низ, а не дата и се сравнява по азбучен ред. Конвертирайте го с CDate, преди да го тествате.
Познаването на правилата за всеки тип премахва повечето изненади, но все пак опитните разработчици могат да се сблъскат с няколко грешки.
Често срещани грешки при сравняване на стойности във VBA
Петте проблема по-долу обясняват повечето сравнения, които връщат неочакван резултат.
- Заданието е погрешно използвано за сравнение: Извън дадено условие, х = 5 съхранява 5 в x. Вътре в If, едни и същи символи проверяват равенството. VBA няма отделен оператор ==, така че прочетете внимателно контекста.
- Тестване Double стойности за точно равенство: Запазената точност означава, че 0.1 + 0.2 = 0.3 връща False. Вместо това сравнете закръглената разлика, например Ако Abs(a – b) < 0.000001, тогава.
- Сравняване на каквото и да е с Null: Null не е равно на нищо, дори на друг Null. Тествайте с IsNull, вместо = Нула.
- Сравняване на текст с число: Клетка, съдържаща текст „100“, не е равна на числото 100. Преобразувайте с CLng или CDbl преди теста.
- Четене на .Text вместо .Value: Свойството .Text връща това, което се показва, което е съкратено по ширината на колоната и форматирането. Винаги сравнявайте .Value.
Изтеглете горния Excel файл Code

