Меню

Как сравнить переменную vba



Comparison Operators in Visual Basic Comparison Operators in Visual Basic

Операторы сравнения сравнивают два выражения и возвращают Boolean значение, представляющее связь их значений. Comparison operators compare two expressions and return a Boolean value that represents the relationship of their values. Существуют операторы для сравнения числовых значений, операторы для сравнения строк и операторы для сравнения объектов. There are operators for comparing numeric values, operators for comparing strings, and operators for comparing objects. Здесь обсуждаются все три типа операторов. All three types of operators are discussed herein.

Сравнение числовых значений Comparing Numeric Values

Visual Basic сравнивает числовые значения с помощью шести числовых операторов сравнения. Visual Basic compares numeric values using six numeric comparison operators. Каждый оператор принимает в качестве операндов два выражения, результатом вычисления которых являются числовые значения. Each operator takes as operands two expressions that evaluate to numeric values. В следующей таблице перечислены операторы и приведены примеры каждого из них. The following table lists the operators and shows examples of each.

Оператор Operator Проверяемое условие Condition tested Примеры Examples
= Проверке = (Equality) Значение первого выражения, равное значению второго? Is the value of the first expression equal to the value of the second? 23 = 33 ‘ False 23 = 33 ‘ False

23 = 23 ‘ True 23 = 23 ‘ True

23 = 12 ‘ False 23 = 12 ‘ False

<> Неравенство <> (Inequality) Значение первого выражения, не равное значению второго? Is the value of the first expression unequal to the value of the second? 23 <> 33 ‘ True 23 <> 33 ‘ True

23 <> 23 ‘ False 23 <> 23 ‘ False

23 <> 12 ‘ True 23 <> 12 ‘ True

(Меньше) (Less than) Значение первого выражения меньше значения второго? Is the value of the first expression less than the value of the second? 23 33 ‘ True 23 33 ‘ True

23 23 ‘ False 23 23 ‘ False

23 12 ‘ False 23 12 ‘ False

> (Больше) > (Greater than) Значение первого выражения, превышающего значение второго? Is the value of the first expression greater than the value of the second? 23 > 33 ‘ False 23 > 33 ‘ False

23 > 23 ‘ False 23 > 23 ‘ False

23 > 12 ‘ True 23 > 12 ‘ True

(Меньше или равно) (Less than or equal to) Значение первого выражения, которое меньше или равно значению второго? Is the value of the first expression less than or equal to the value of the second? 23 33 ‘ True 23 33 ‘ True

23 23 ‘ True 23 23 ‘ True

23 12 ‘ False 23 12 ‘ False

>= (Больше или равно) >= (Greater than or equal to) Значение первого выражения, которое больше или равно значению второго? Is the value of the first expression greater than or equal to the value of the second? 23 >= 33 ‘ False 23 >= 33 ‘ False

23 >= 23 ‘ True 23 >= 23 ‘ True

23 >= 12 ‘ True 23 >= 12 ‘ True

Сравнение строк Comparing Strings

Visual Basic сравнивает строки с помощью оператора Like , а также числовых операторов сравнения. Visual Basic compares strings using the Like Operator as well as the numeric comparison operators. Like Оператор позволяет указать шаблон. The Like operator allows you to specify a pattern. Затем Строка сравнивается с шаблоном, и, если она соответствует, результатом будет True . The string is then compared against the pattern, and if it matches, the result is True . В противном случае результат будет False . Otherwise, the result is False . Числовые операторы позволяют сравнивать значения на String основе их порядка сортировки, как показано в следующем примере. The numeric operators allow you to compare String values based on their sort order, as the following example shows.

‘ The result of the preceding comparison is True.

Результатом в предыдущем примере является то, True что первый символ в первой строке сортируется перед первым символом во второй строке. The result in the preceding example is True because the first character in the first string sorts before the first character in the second string. Если первые символы равны, то сравнение будет продолжаться со следующим символом в обеих строках и т. д. If the first characters were equal, the comparison would continue to the next character in both strings, and so on. Можно также проверить равенство строк с помощью оператора равенства, как показано в следующем примере. You can also test equality of strings using the equality operator, as the following example shows.

‘ The result of the preceding comparison is True.

Если одна строка является префиксом другой, например «AA» и «AAA», более длинная строка считается больше чем укороченная строка. If one string is a prefix of another, such as «aa» and «aaa», the longer string is considered to be greater than the shorter string. Это показано в следующем примере. The following example illustrates this.

‘ The result of the preceding comparison is True.

Порядок сортировки основан на двоичном сравнении или текстовом сравнении в зависимости от значения параметра Option Compare . The sort order is based on either a binary comparison or a textual comparison depending on the setting of Option Compare . Дополнительные сведения см. в разделе вариант инструкции Compare. For more information see Option Compare Statement.

Сравнение объектов Comparing Objects

Visual Basic сравнивает две переменные ссылки на объект с помощью оператора is и оператора IsNot. Visual Basic compares two object reference variables with the Is Operator and the IsNot Operator. Чтобы определить, ссылаются ли две ссылочные переменные на один и тот же экземпляр объекта, можно использовать любой из этих операторов. You can use either of these operators to determine if two reference variables refer to the same object instance. Это показано в следующем примере. The following example illustrates this.

В предыдущем примере x Is y принимает значение True , так как обе переменные ссылаются на один и тот же экземпляр. In the preceding example, x Is y evaluates to True , because both variables refer to the same instance. Сравните этот результат со следующим примером. Contrast this result with the following example.

В предыдущем примере принимает значение x Is y False , поскольку хотя переменные ссылаются на объекты одного типа, они ссылаются на разные экземпляры этого типа. In the preceding example, x Is y evaluates to False , because although the variables refer to objects of the same type, they refer to different instances of that type.

Если требуется проверить наличие двух объектов, не указывающих на один и тот же экземпляр, IsNot оператор позволяет избежать сочетания грамматически неловкий Not и Is . When you want to test for two objects not pointing to the same instance, the IsNot operator lets you avoid a grammatically clumsy combination of Not and Is . Это показано в следующем примере. The following example illustrates this.

В предыдущем примере If a IsNot b эквивалентно If Not a Is b . In the preceding example, If a IsNot b is equivalent to If Not a Is b .

Сравнение типа объекта Comparing Object Type

Можно проверить, относится ли объект к определенному типу с помощью TypeOf выражения. Is . You can test whether an object is of a particular type with the TypeOf . Is expression. Синтаксис выглядит следующим образом: The syntax is as follows:

Если typename указывает тип интерфейса, TypeOf выражение. Возвращает, Is True Если объект реализует тип интерфейса. When typename specifies an interface type, then the TypeOf . Is expression returns True if the object implements the interface type. Если typename является типом класса, выражение возвращает значение, True Если объект является экземпляром указанного класса или класса, производного от указанного класса. When typename is a class type, then the expression returns True if the object is an instance of the specified class or of a class that derives from the specified class. Это показано в следующем примере. The following example illustrates this.

В приведенном выше примере TypeOf x Is Control результатом вычисления выражения True x является тип Button , который наследует от Control . In the preceding example, the TypeOf x Is Control expression evaluates to True because the type of x is Button , which inherits from Control .

Дополнительные сведения см. в разделе оператор typeof. For more information, see TypeOf Operator.

Источник

Сравнение значений (Visual Basic) Value Comparisons (Visual Basic)

Операторы сравнения можно использовать для создания выражений, которые сравнивают значения числовых переменных. Comparison operators can be used to construct expressions that compare the values of numeric variables. Эти выражения возвращают Boolean значение в зависимости от того, имеет ли сравнение значение true или false. These expressions return a Boolean value based on whether the comparison is true or false. Ниже приведены примеры таких выражений. Examples of such an expression are as follows.

Первое выражение принимает значение True , так как 45 больше 26. The first expression evaluates to True , because 45 is greater than 26. Во втором примере вычисляется значение False , поскольку 26 не превышает 45. The second example evaluates to False , because 26 is not greater than 45.

Таким образом можно также сравнить числовые выражения. You can also compare numeric expressions in this fashion. Сравниваемые выражения могут быть сложными выражениями, как показано в следующем примере. The expressions you compare can themselves be complex expressions, as in the following example.

x / 45 * (y +17) >= System.Math.Sqrt(z) / (p — (x * 16))

Предыдущее сложное выражение включает литералы, переменные и вызовы функций. The preceding complex expression includes literals, variables, and function calls. Выражения на обеих сторонах оператора сравнения оцениваются, а результирующие значения сравниваются с помощью >= оператора сравнения. The expressions on both sides of the comparison operator are evaluated, and the resulting values are then compared using the >= comparison operator. Если значение выражения в левой части больше или равно значению выражения справа, результатом вычисления всего выражения будет True ; в противном случае — значение False . If the value of the expression on the left side is greater than or equal to the value of the expression on the right, the entire expression evaluates to True ; otherwise, it evaluates to False .

Выражения, которые сравнивают значения, чаще всего используются в If. Then конструкциях, как показано в следующем примере. Expressions that compare values are most commonly used in If. Then constructions, as in the following example.

= Знак является оператором сравнения, а также оператором присваивания. The = sign is a comparison operator as well as an assignment operator. При использовании в качестве оператора сравнения он вычисляет, равно ли значение слева значению справа, как показано в следующем примере. When used as a comparison operator, it evaluates whether the value on the left is equal to the value on the right, as shown in the following example.

Можно также использовать выражение сравнения в любом месте Boolean , где требуется значение, например в If While операторе,, Loop или ElseIf , а также при назначении или передаче значения в Boolean переменную. You can also use a comparison expression anywhere a Boolean value is needed, such as in an If , While , Loop , or ElseIf statement, or when assigning to or passing a value to a Boolean variable. В следующем примере значение, возвращаемое выражением сравнения, присваивается Boolean переменной. In the following example, the value returned by the comparison expression is assigned to a Boolean variable.

Источник

Операторы сравнения (Visual Basic) Comparison Operators (Visual Basic)

Ниже приведены операторы сравнения, определенные в Visual Basic. The following are the comparison operators defined in Visual Basic.

Эти операторы сравнивают два выражения, чтобы определить, равны ли они, и если нет, то их отличия. These operators compare two expressions to determine whether or not they are equal, and if not, how they differ. Is , IsNot и Like подробно обсуждаются на отдельных страницах справки. Is , IsNot , and Like are discussed in detail on separate Help pages. Реляционные операторы сравнения подробно обсуждаются на этой странице. The relational comparison operators are discussed in detail on this page.

Синтаксис Syntax

Компоненты Parts

result
Обязательный элемент. Required. Boolean Значение, представляющее результат сравнения. A Boolean value representing the result of the comparison.

expression1 , expression2 expression1 , expression2
Обязательный. Required. Любое выражение. Any expression.

comparisonoperator
Обязательный. Required. Любой оператор реляционного сравнения. Any relational comparison operator.

object1 , object2 object1 , object2
Обязательный элемент. Required. Имена ссылочных объектов. Any reference object names.

string
Обязательный. Required. Произвольное выражение String . Any String expression.

pattern
Обязательный. Required. Любое String выражение или диапазон символов. Any String expression or range of characters.

Remarks Remarks

В следующей таблице содержится список реляционных операторов сравнения и условий, определяющих, result является ли True False . The following table contains a list of the relational comparison operators and the conditions that determine whether result is True or False .

Оператор Operator True , если True if False , если False if
(Меньше) (Less than) expression1 expression2 expression1 >= expression2
(Меньше или равно) (Less than or equal to) expression1 expression2 expression1 > expression2
> (Больше) > (Greater than) expression1 > expression2 expression1 expression2
>= (Больше или равно) >= (Greater than or equal to) expression1 >= expression2 expression1 expression2
= (Равно) = (Equal to) expression1 = expression2 expression1 <> expression2
<> (Не равно) <> (Not equal to) expression1 <> expression2 expression1 = expression2

Оператор = также используется в качестве оператора присваивания. The = Operator is also used as an assignment operator.

Is Оператор, IsNot оператор и Like оператор имеют специальные функции сравнения, отличные от операторов в предыдущей таблице. The Is operator, the IsNot operator, and the Like operator have specific comparison functionalities that differ from the operators in the preceding table.

Сравнение чисел Comparing Numbers

При сравнении выражения типа Single с одним из типов Double Single выражение преобразуется в Double . When you compare an expression of type Single to one of type Double , the Single expression is converted to Double . Это поведение противоположено поведению, обнаруженному в Visual Basic 6. This behavior is opposite to the behavior found in Visual Basic 6.

Аналогично, при сравнении выражения типа Decimal с выражением типа Single или Double Decimal выражение преобразуется в тип Single или Double . Similarly, when you compare an expression of type Decimal to an expression of type Single or Double , the Decimal expression is converted to Single or Double . Для Decimal выражений любое значение дробной части меньше 1E-28 может быть потеряно. For Decimal expressions, any fractional value less than 1E-28 might be lost. Такая утрата дробных значений может привести к тому, что два значения будут сравниваться как равные, если это не так. Such fractional value loss may cause two values to compare as equal when they are not. По этой причине следует соблюдать осторожность при использовании равенства ( = ) для сравнения двух переменных с плавающей запятой. For this reason, you should take care when using equality ( = ) to compare two floating-point variables. Безопаснее проверить, является ли абсолютное значение разницы между двумя числами меньше, чем небольшая допустимая погрешность. It is safer to test whether the absolute value of the difference between the two numbers is less than a small acceptable tolerance.

Точность чисел с плавающей запятой Floating-point Imprecision

При работе с числами с плавающей запятой следует помнить, что они не всегда имеют точное представление в памяти. When you work with floating-point numbers, keep in mind that they do not always have a precise representation in memory. Это может привести к непредвиденным результатам некоторых операций, таких как сравнение значений и оператор Mod. This could lead to unexpected results from certain operations, such as value comparison and the Mod Operator. Дополнительные сведения см. в разделе Устранение неполадок типов данных. For more information, see Troubleshooting Data Types.

Сравнение строк Comparing Strings

При сравнении строк строковые выражения оцениваются на основе их порядка сортировки в алфавитном порядке, который зависит от Option Compare параметра. When you compare strings, the string expressions are evaluated based on their alphabetical sort order, which depends on the Option Compare setting.

Option Compare Binary базовые сравнения строк в порядке сортировки, производном от внутренних двоичных представлений символов. Option Compare Binary bases string comparisons on a sort order derived from the internal binary representations of the characters. Порядок сортировки определяется кодовой страницей. The sort order is determined by the code page. В следующем примере показан типичный порядок двоичной сортировки. The following example shows a typical binary sort order.

Option Compare Text сравнения строк при сравнении без учета регистра, порядок сортировки текста определяется языковым стандартом приложения. Option Compare Text bases string comparisons on a case-insensitive, textual sort order determined by your application’s locale. При задании Option Compare Text и сортировке символов в предыдущем примере применяется следующий порядок сортировки текста: When you set Option Compare Text and sort the characters in the preceding example, the following text sort order applies:

Зависимость от локали Locale Dependence

При установке Option Compare Text результат сравнения строк может зависеть от языкового стандарта, в котором выполняется приложение. When you set Option Compare Text , the result of a string comparison can depend on the locale in which the application is running. Два символа могут сравниваться как одинаковые в одном языковом стандарте, но не в другом. Two characters might compare as equal in one locale but not in another. Если вы используете сравнение строк для принятия важных решений, например, принимаете ли вы попытку входа в систему, вы должны быть извещены о конфиденциальности языкового стандарта. If you are using a string comparison to make important decisions, such as whether to accept an attempt to log on, you should be alert to locale sensitivity. Рекомендуется либо задать Option Compare Binary , либо вызвать метод StrComp , который учитывает языковой стандарт. Consider either setting Option Compare Binary or calling the StrComp, which takes the locale into account.

Программирование без типов с помощью реляционных операторов сравнения Typeless Programming with Relational Comparison Operators

Использование реляционных операторов сравнения с Object выражениями не допускается в Option Strict On . The use of relational comparison operators with Object expressions is not allowed under Option Strict On . Если Option Strict имеет значение Off , а expression1 либо expression2 является Object выражением, типы времени выполнения определяют, как они сравниваются. When Option Strict is Off , and either expression1 or expression2 is an Object expression, the run-time types determine how they are compared. В следующей таблице показано, как сравниваются выражения и результат сравнения, в зависимости от типа операндов среды выполнения. The following table shows how the expressions are compared and the result from the comparison, depending on the runtime type of the operands.

Если операнды If operands are Сравнение: Comparison is
Как String Both String Сравнение сортировки на основе характеристик сортировки строк. Sort comparison based on string sorting characteristics.
Оба числовых Both numeric Объекты, преобразованные в Double , числовое сравнение. Objects converted to Double , numeric comparison.
Один числовой и один String One numeric and one String String Преобразуется в Double и выполняется числовое сравнение. The String is converted to a Double and numeric comparison is performed. Если объект String не может быть преобразован в Double , InvalidCastException создается исключение. If the String cannot be converted to Double , an InvalidCastException is thrown.
Один или оба являются ссылочными типами, отличными от String Either or both are reference types other than String Возникает исключение InvalidCastException. An InvalidCastException is thrown.

Числовые сравнения обрабатываются Nothing как 0. Numeric comparisons treat Nothing as 0. Сравнения строк обрабатываются Nothing как «» (пустая строка). String comparisons treat Nothing as «» (an empty string).

Перегрузка Overloading

Реляционные операторы сравнения ( . The relational comparison operators ( . , > , >= , = , <> ) могут быть перегружены. Это означает, что класс или структура могут переопределять их поведение, когда операнд имеет тип этого класса или структуры. , > , >= , = , <> ) can be overloaded, which means that a class or structure can redefine their behavior when an operand has the type of that class or structure. Если в коде используются какие-либо из этих операторов в таком классе или структуре, убедитесь, что вы понимаете переопределенное поведение. If your code uses any of these operators on such a class or structure, be sure you understand the redefined behavior. Для получения дополнительной информации см. Operator Procedures. For more information, see Operator Procedures.

Обратите внимание, что оператор = можно перегружать только как оператор реляционного сравнения, а не как оператор присваивания. Notice that the = Operator can be overloaded only as a relational comparison operator, not as an assignment operator.

Пример Example

В следующем примере показаны различные варианты использования реляционных операторов сравнения, которые используются для сравнения выражений. The following example shows various uses of relational comparison operators, which you use to compare expressions. Реляционные операторы сравнения возвращают Boolean результат, который представляет, принимает ли указанное выражение значение True . Relational comparison operators return a Boolean result that represents whether or not the stated expression evaluates to True . При применении > операторов and к строкам сравнение выполняется с использованием обычного алфавитного порядка сортировки строк. When you apply the > and operators to strings, the comparison is made using the normal alphabetical sorting order of the strings. Этот порядок может зависеть от настроек языкового стандарта. This order can be dependent on your locale setting. Учитывается ли сортировка с учетом регистра или не зависит от параметра параметра Compare . Whether the sort is case-sensitive or not depends on the Option Compare setting.

В предыдущем примере первое сравнение возвращает, False а оставшиеся сравнения возвращают True . In the preceding example, the first comparison returns False and the remaining comparisons return True .

Источник

Читайте также:  Сравнение китайских кроссоверов 2021 года