Сравнение на VBA Operators: Не е равно, Less от или равно на

⚡ Умно обобщение

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

  • Основание: Операторите за сравнение валидират данните, като тестват условие, което се оценява като True или False.
  • 🔢 Шест Operaторове: Равно, по-малко от, по-голямо от, неравно на, по-малко или равно на и по-голямо или равно на.
  • 🔁 Двойна роля: Знакът за равенство сравнява вътре в условие и присвоява стойност извън него.
  • 🧪 Ако оператор: Всяко сравнение се поставя вътре в If, ElseIf или Do While, за да се контролира кой код се изпълнява.
  • 🔤 Текст и дати: Низовете сравняват символ по символ, а датите се сравняват като серийни номера.
  • ⚠️ Прецизен капан: две Double Стойности, които изглеждат еднакви, могат да не преминат теста за равенство, така че сравнете закръглена разлика.

Сравнение на VBA Operaтори

Сравнение на 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” е заглавието на полето за съобщение.

Изпълнението на горния код дава следните резултати

равен 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

Въпроси и Отговори

Не. VBA оценява първото сравнение като True или False, след което сравнява този резултат с 10, което дава подвеждащ отговор. Напишете двата теста отделно и ги съединете с And.

Like сравнява низ с шаблон, а не с точна стойност. Заместващите символи включват звездичка за произволен символ и въпросителен знак за един символ, така че „Guru99“ Като „Guru*” връща True.

Използвайте оператора Is, както в If ws Is Nothing Then. Знакът за равенство сравнява стойности, докато Is проверява дали две обектни променливи сочат към един и същ обект, което е единственият валиден тест за обекти.

Да. Опишете правилото с прости думи, например „маркирайте всяка поръчка над 500, направена преди днес“, и асистент с изкуствен интелект ще върне съответстващото условие „Ако“. Проверете граничните стойности, преди да му се доверите.

Да. Поставете блока If и асистент с изкуствен интелект. tracкой клон улавя всяка стойност, след което посочва недостижим ElseIf или сравнение между текст и число. Потвърдете корекцията по стъпкаping чрез кода.

Обобщете тази публикация с: