Visual basic or and в одном цикле

- 07/20/2015
- Чтение занимает 2 мин
В этой статье
Выполняет логическое сложение двух Boolean выражений или побитовое сложение двух числовых выражений.Performs a logical disjunction on two Boolean expressions, or a bitwise disjunction on two numeric expressions.
СинтаксисSyntax
result = expression1 Or expression2
КомпонентыParts
result
Обязательный.Required. Произвольное выражение типа Boolean или числового типа.Any Boolean or numeric expression. Для Boolean сравнения result – это включающее логическое сложение двух Boolean значений.For Boolean comparison, result is the inclusive logical disjunction of two Boolean values. Для битовых операций result – это числовое значение, представляющее включающее побитовое сложение двух числовых битов.For bitwise operations, result is a numeric value representing the inclusive bitwise disjunction of two numeric bit patterns.
expression1
Обязательный.Required. Произвольное выражение типа Boolean или числового типа.Any Boolean or numeric expression.
expression2
Обязательный.Required. Произвольное выражение типа Boolean или числового типа.Any Boolean or numeric expression.
Для Boolean сравнения result параметр имеет значение, False только если оба expression1 expression2 значения и имеют значение False .For Boolean comparison, result is False if and only if both expression1 and expression2 evaluate to False. В следующей таблице показано, как result определяется.The following table illustrates how result is determined.
Если expression1 имеет значение If expression1 is | И expression2 являетсяAnd expression2 is | Значение result равноThe value of result is |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
Примечание
В Boolean сравнении Or оператор всегда вычисляет оба выражения, которые могут включать вызовы процедур.In a Boolean comparison, the Or operator always evaluates both expressions, which could include making procedure calls. Оператор OrElse выполняет сокращенное вычисление, означающее, что если expression1 имеет значение True , то expression2 не вычисляется.The OrElse Operator performs short-circuiting, which means that if expression1 is True, then expression2 is not evaluated.
Для побитовых операций Or оператор выполняет побитовое сравнение одинаково позиционированных битов в двух числовых выражениях и устанавливает соответствующий бит в result соответствии со следующей таблицей.For bitwise operations, the Or operator performs a bitwise comparison of identically positioned bits in two numeric expressions and sets the corresponding bit in result according to the following table.
Если бит в expression1 имеет значениеIf bit in expression1 is | И bit в expression2 имеетAnd bit in expression2 is | Бит в result имеет значениеThe bit in result is |
---|---|---|
11 | 11 | 11 |
11 | 00 | 11 |
00 | 11 | 11 |
00 | 00 | 00 |
Примечание
Так как логические и побитовые операторы имеют более низкий приоритет, чем другие арифметические и реляционные операторы, все битовые операции должны быть заключены в круглые скобки, чтобы обеспечить точное выполнение.Since the logical and bitwise operators have a lower precedence than other arithmetic and relational operators, any bitwise operations should be enclosed in parentheses to ensure accurate execution.
Типы данныхData Types
Если операнды состоят из одного Boolean выражения и одного числового выражения, Visual Basic преобразует Boolean выражение в числовое значение (- 1 для True и 0 для False ) и выполняет побитовую операцию.If the operands consist of one Boolean expression and one numeric expression, Visual Basic converts the Boolean expression to a numeric value (-1 for True and 0 for False) and performs a bitwise operation.
Для Boolean сравнения тип данных результата – Boolean .For a Boolean comparison, the data type of the result is Boolean. Для побитового сравнения тип данных результата является числовым типом, подходящим для типов данных expression1 и expression2 .For a bitwise comparison, the result data type is a numeric type appropriate for the data types of expression1 and expression2. См. таблицу “реляционные и побитовые сравнения” в разделе типы данных результатов операторов.See the “Relational and Bitwise Comparisons” table in Data Types of Operator Results.
ПерегрузкаOverloading
OrОператор можно перегрузить, что означает, что класс или структура может переопределить свое поведение, когда операнд имеет тип этого класса или структуры.The Or operator can be overloaded, which means that a class or structure can redefine its behavior when an operand has the type of that class or structure. Если код использует этот оператор для такого класса или структуры, убедитесь, что вы понимаете его переопределенное поведение.If your code uses this operator on such a class or structure, be sure you understand its redefined behavior. Для получения дополнительной информации см. Operator Procedures.For more rmation, see Operator Procedures.
ПримерExample
В следующем примере оператор используется Or для выполнения включающего логического сложения двух выражений.The following example uses the Or operator to perform an inclusive logical disjunction on two expressions. Результатом является Boolean значение, которое представляет, является ли одно из двух выражений True .The result is a Boolean value that represents whether either of the two expressions is True.
Dim a As Integer = 10 Dim b As Integer = 8 Dim c As Integer = 6 Dim firstCheck, secondCheck, thirdCheck As Boolean firstCheck = a > b Or b > c secondCheck = b > a Or b > c thirdCheck = b > a Or c > b
В предыдущем примере создаются результаты True , True и False соответственно.The preceding example produces results of True, True, and False, respectively.
ПримерExample
В следующем примере оператор используется Or для выполнения инклюзивного логического сложения по отдельным битам двух числовых выражений.The following example uses the Or operator to perform inclusive logical disjunction on the individual bits of two numeric expressions. Бит в результирующем шаблоне задается, если один из соответствующих битов операндов имеет значение 1.The bit in the result pattern is set if either of the corresponding bits in the operands is set to 1.
Dim a As Integer = 10 Dim b As Integer = 8 Dim c As Integer = 6 Dim firstPattern, secondPattern, thirdPattern As Integer firstPattern = (a Or b) secondPattern = (a Or c) thirdPattern = (b Or c)
В предыдущем примере выдается результат 10, 14 и 14 соответственно.The preceding example produces results of 10, 14, and 14, respectively.
См. такжеSee also
- Логические (побитовые) операторы (Visual Basic)Logical/Bitwise Operators (Visual Basic)
- Порядок применения операторов в Visual BasicOperator Precedence in Visual Basic
- Список операторов, сгруппированных по функциональному назначениюOperators Listed by ality
- Оператор OrElseOrElse Operator
- Логические и побитовые операторы в Visual BasicLogical and Bitwise Operators in Visual Basic
Источник
Доброго времени суток! Данную статью я решил посвятить рубрике по основам программирования в Visual Basic for Application. И сегодня мы поговорим о циклах в VBA, разберём их синтаксис и рассмотрим несколько примеров, которые часто встречаются программисту.
Сначала напомню, что цикл – процесс повторения части кода, выполняемый, пока не будет выполнено или нарушено заданное нами условие.
В данной статье мы разберём синтаксис и примеры следующих циклов в VBA:
- For
- For each
- While
- Until
Цикл For в VBA
Цикл for в VBA обычно используется при зацикливании фрагмента кода, если нам известно конечное значение counter – счетчика, при котором мы выйдем из цикла.
Возьмём для примера самый распространённый пример:
Сгенерировать массив из 5 целых значений
Dim mas(5) As Integer For i% = 0 To 4 mas(i) = Int((10 * Rnd) + 1) Next i
Обратите ваше внимание, что в этом примере используется неявное объявление при работе с циклами в VBA. i% – означает неявное объявление переменной i в формате integer. Такая конструкция по сути заменяет следующую: dim i as integer. Это используется для сокращения кода и для удобства написания и чтения. В старых версиях VBA необходимо указывать знак формата после каждого использования неявной переменной. В более поздних версиях достаточно всего один раз.
VBA для цикла for даёт возможность использовать функцию Step. Как ясно из перевода, это шаг, с которым мы будем проходить наш интервал. По умолчанию, он равен 1. Популярный вариант использования встречается в случаях, когда counter связан с переменной, используемой внутри цикла. Например, при написании программ, связанных с функциями.
Найти пересечение графика функции y = 5*x + 5 с осью ординат
expr(x As Integer) As Integer expr = 5 * x + 5 End Sub CodeTown() Dim i As Integer For i = -10 To 10 Step 1 If expr(i) = 0 Then MsgBox “При Y = 0, Х = “+ CStr(i) Next i End Sub
Теперь представим, что у нас достаточно большой диапазон и мы не хотим заставлять компьютер считать лишние итерации. На этот случай существует команда Exit For. Перепишем наш последний пример с новой командой.
expr(x As Integer) As Integer expr = 5 * x + 5 End Sub CodeTown() Dim i As Integer For i = -10 To 10 Step 1 If expr(i) = 0 Then MsgBox “При Y = 0, Х = “+ CStr(i) Exit For End If Next i End Sub
C помощью команды Exit можно закончить выполнение любого цикла в VBA. Достаточно указать после Exit название используемого цикла. Также им возможно завершить работу любой процедуры или функции.
Цикл For Each в VBA
For Each в VBA основан на переборе всех элементов, указанного типа в массиве, объекте или группе.
Самый популярный вариант его использования – перебор страниц в рабочей книге.
Вывести названия всех листов в рабочей книге
For Each ws In ThisWorkbook.Worksheets MsgBox ws.Name Next ws
И ещё один интересный пример:
Изменить размер шрифта и выравнить по центру текст в label
For Each element In UserForm1.Controls If InStr(1, UserForm1.Controls.Item(i%).Name, “Label”) > 0 Then UserForm1.Controls.Item(i%).TextAlign = fmTextAlignCenter UserForm1.Controls.Item(i%).Font.Size = 20 i% = i% + 1 End If Next element
Тут следует понимать, что через Controls можно обратиться к любому элементу формы. Если отфильтровать по имени, например, как мы сделали выше, то можно выделить группы элементов и изменить их свойства. В данном случае, размер шрифта и выравнивание.
Цикл While в VBA
Циклы в VBA, которые используют структуру Do..Loop (это while и until циклы) можно записывать с разным расположением фрагмента условия. Как видите на картинке выше, условие может проверяться после выполнения одной итерации, а может перед запуском цикла.
Самый популярный пример:
Отсортируйте по возрастанию сгенерированный массив методом пузырька
Dim mas(5) As Integer For i% = 0 To 4 mas(i%) = Int((10 * Rnd) + 1) Next i Dim count As Integer, temp As Integer count = 1 Do While count > 0 count = 0 For i% = 0 To 3 If mas(i) > mas(i + 1) Then temp = mas(i) mas(i) = mas(i + 1) mas(i + 1) = temp count = count + 1 End If Next i% Loop
В вышеуказанном примере мы отсортировали массив с рандомными значениями в порядке возрастания. Метод пузырька считается достаточно долгим, но простым в реализации. В основном, им сортируют небольшие числовые массивы.
Цикл Until в VBA
Как видите, отличия от while крайне несущественные. Цикл Until в VBA можно реализовать с помощью конструкции while NOT (condition). Тем не менее, приведу пример:
Заставить пользователя ввести число
Dim temp As Variant Do temp = InputBox(“Введите число”) Loop Until IsNumeric(temp)
Почему заставить? Потому, что если пользователь закроет окно ввода, это его не спасёт, оно будет появляться вновь и вновь пока он не введёт любое число.
На этом мы закончим. Сегодня мы рассмотрели важную тему циклов в VBA, разобрали основные примеры. Конечно все примеры по этой обширной теме сложно разобрать, но, тем не менее, основы вы должны понять. Оставляйте ваши комментарии, если у вас возникли вопросы.
Скачать исходник
Источник
- 07/20/2015
- Чтение занимает 2 мин
В этой статье
Выполняет логическое умножение двух Boolean выражений или побитовое умножение двух числовых выражений.Performs a logical conjunction on two Boolean expressions, or a bitwise conjunction on two numeric expressions.
СинтаксисSyntax
result = expression1 And expression2
КомпонентыParts
result
Обязательный.Required. Произвольное выражение типа Boolean или числового типа.Any Boolean or numeric expression. Для логического сравнения result – это логическое умножение двух Boolean значений.For Boolean comparison, result is the logical conjunction of two Boolean values. Для битовых операций result – это числовое значение, представляющее побитовое умножение двух числовых битов.For bitwise operations, result is a numeric value representing the bitwise conjunction of two numeric bit patterns.
expression1
Обязательный.Required. Произвольное выражение типа Boolean или числового типа.Any Boolean or numeric expression.
expression2
Обязательный.Required. Произвольное выражение типа Boolean или числового типа.Any Boolean or numeric expression.
Для логического сравнения result параметр имеет значение, True только если оба значения expression1 и имеют значение expression2 True .For Boolean comparison, result is True if and only if both expression1 and expression2 evaluate to True. В следующей таблице показано, как result определяется.The following table illustrates how result is determined.
Если expression1 имеет значение If expression1 is | И expression2 являетсяAnd expression2 is | Значение result равноThe value of result is |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
Примечание
При логическом сравнении And оператор всегда вычисляет оба выражения, которые могут включать вызовы процедур.In a Boolean comparison, the And operator always evaluates both expressions, which could include making procedure calls. Оператор AndAlso выполняет сокращенное вычисление, означающее, что если expression1 имеет значение False , то expression2 не вычисляется.The AndAlso Operator performs short-circuiting, which means that if expression1 is False, then expression2 is not evaluated.
При применении к числовым значениям And оператор выполняет побитовое сравнение одинаково позиционированных битов в двух числовых выражениях и устанавливает соответствующий бит в result соответствии со следующей таблицей.When applied to numeric values, the And operator performs a bitwise comparison of identically positioned bits in two numeric expressions and sets the corresponding bit in result according to the following table.
Если бит в expression1 имеет значениеIf bit in expression1 is | И bit в expression2 имеетAnd bit in expression2 is | Бит в result имеет значениеThe bit in result is |
---|---|---|
11 | 11 | 11 |
11 | 00 | 00 |
00 | 11 | 00 |
00 | 00 | 00 |
Примечание
Так как логические и побитовые операторы имеют более низкий приоритет, чем другие арифметические и реляционные операторы, все битовые операции должны быть заключены в круглые скобки для обеспечения точных результатов.Since the logical and bitwise operators have a lower precedence than other arithmetic and relational operators, any bitwise operations should be enclosed in parentheses to ensure accurate results.
Типы данныхData Types
Если операнды состоят из одного Boolean выражения и одного числового выражения, Visual Basic преобразует Boolean выражение в числовое значение (- 1 для True и 0 для False ) и выполняет побитовую операцию.If the operands consist of one Boolean expression and one numeric expression, Visual Basic converts the Boolean expression to a numeric value (-1 for True and 0 for False) and performs a bitwise operation.
Для логического сравнения тип данных результата – Boolean .For a Boolean comparison, the data type of the result is Boolean. Для побитового сравнения тип данных результата является числовым типом, подходящим для типов данных expression1 и expression2 .For a bitwise comparison, the result data type is a numeric type appropriate for the data types of expression1 and expression2. См. таблицу “реляционные и побитовые сравнения” в разделе типы данных результатов операторов.See the “Relational and Bitwise Comparisons” table in Data Types of Operator Results.
Примечание
AndОператор можно перегрузить, что означает, что класс или структура может переопределить свое поведение, когда операнд имеет тип этого класса или структуры.The And operator can be overloaded, which means that a class or structure can redefine its behavior when an operand has the type of that class or structure. Если код использует этот оператор для такого класса или структуры, убедитесь, что вы понимаете его переопределенное поведение.If your code uses this operator on such a class or structure, be sure you understand its redefined behavior. Для получения дополнительной информации см. Operator Procedures.For more rmation, see Operator Procedures.
ПримерExample
В следующем примере оператор используется And для выполнения логического умножения двух выражений.The following example uses the And operator to perform a logical conjunction on two expressions. Результатом является Boolean значение, которое показывает, равны ли оба выражения True .The result is a Boolean value that represents whether both of the expressions are True.
Dim a As Integer = 10 Dim b As Integer = 8 Dim c As Integer = 6 Dim firstCheck, secondCheck As Boolean firstCheck = a > b And b > c secondCheck = b > a And b > c
В предыдущем примере создаются результаты True и False соответственно.The preceding example produces results of True and False, respectively.
ПримерExample
В следующем примере оператор используется And для выполнения логического умножения отдельных битов двух числовых выражений.The following example uses the And operator to perform logical conjunction on the individual bits of two numeric expressions. Бит в результирующем шаблоне задается, если для соответствующих битов в операндах задано значение 1.The bit in the result pattern is set if the corresponding bits in the operands are both set to 1.
Dim a As Integer = 10 Dim b As Integer = 8 Dim c As Integer = 6 Dim firstPattern, secondPattern, thirdPattern As Integer firstPattern = (a And b) secondPattern = (a And c) thirdPattern = (b And c)
В предыдущем примере выдается результат 8, 2 и 0 соответственно.The preceding example produces results of 8, 2, and 0, respectively.
См. такжеSee also
- Логические (побитовые) операторы (Visual Basic)Logical/Bitwise Operators (Visual Basic)
- Порядок применения операторов в Visual BasicOperator Precedence in Visual Basic
- Список операторов, сгруппированных по функциональному назначениюOperators Listed by ality
- Оператор AndAlsoAndAlso Operator
- Логические и побитовые операторы в Visual BasicLogical and Bitwise Operators in Visual Basic
Источник
Цикл – это оператор или группа операторов, которые программа многократно выполняет до тех пор, пока не получит команду начать выполнение чего – либо другого. В Visual Basic существуют два основных типа циклов – циклы со счетчиком (с известным числом повторений) и циклы с условием. Циклы со счетчиком используют в тех случаях, когда необходимо выполнить некоторые действия определенное число раз. Циклы с условием применяются тогда, когда некоторые действия в программе должны повторяться до тех пор, пока выполняется определенное условие или до тех пор, пока не будет выполнено определенное условие.
Циклы со счетчиком
Циклы со счетчиком (с известным числом повторений) в Visual Basic еще называют циклами For, или циклами For … Next. Так они называются потому, что начало и конец этих циклов определяются операторами For и Next. Синтаксис цикла For. . .Next таков:
For СчетчикЦикла= НачальноеЗначение To КонечноеЗначение [Step Шаг]
Блок операторов
[Exit For]
Next [СчетчикЦикла]
где
For – ключевое слово Visual Basic, обозначающее начало цикла;
СчетчикЦикла- переменная, определенная в качестве счетчика цикла;
НачальноеЗначение – число, задающее начальное значение счетчика;
То – ключевое слово Visual Basic, разделяющее НачальноеЗначение и КонечноеЗначение – число, задающее значение счетчика, при котором цикл завершается;
Step – ключевое слово Visual Basic, используемое для задания шага цикла, необязательный аргумент;
Шаг – число, задающее шаг цикла, т.е. значение на которое увеличивается (или уменьшается) значение счетчика на каждом шаге, это число может быть отрицательным;
Exit For – оператор досрочного выхода из цикла (необязательный);
Next – ключевое слово Visual Basic, обозначающее конец цикла.
В начале цикла For …Next определяется переменная-счетчик, а так же начальное и конечное значения этой переменной. В самом начале выполнения цикла переменная – счетчик устанавливается в начальное значение. Каждый раз, когда программа пройдя через цикл, возвращается к его началу, значение счетчика увеличивается. Если используется ключевое слово Step, то переменная- счетчик изменяется в соответствии с числом, указанным после ключевого слова Step. Например:
For I = 0 То 10 Step 2 ‘ Значение I будет увеличиваться на 2
Если ключевое слово Step отсутствует, то значение шага равно единице.
Каждый раз, когда значение переменной-счетчика изменяется, оно сравнивается с заданным конечным значением счетчика. Если значение счетчика превышает конечное значение, программа сразу выходит из цикла и переходит к той строке кода, которая следует за циклом.
Пример:
Option Explicit
Dim I As Integer
For I = 1 To 4
Sum =Sum + 2
Next I
Этот цикл эквивалентен написанию четырех операторов Sum =Sum + 2 в тексте программы.
Цикл For . . . Next Может быть прерван досрочно, например, при достижении какого – либо условия. Для этого в нужном месте цикла нужно поместить оператор Exit For. Например:
Option Explicit
Dim Sum As Integer
Dim j As Integer
Sum = 2
For j = 1 To 10
Sum = Sum + j
If Sum > 6 Then
Exit For ‘ Выход из цикла, если значение Sum больше 6
End If
Next j
TextBox1.Text = Sum
В этом примере цикл прерывается досрочно, когда значение переменной Sum будет больше 6. В результате выполнения этого кода в текстовом поле будет выведено вычисленное значение переменной Sum равное 8.
Циклы с условием
Главной особенностью циклов с условием является условие, которое может быть любым выражением, принимающим значение True (Истина) или False (Ложно). В Visual Basic есть два основных цикла с условием – цикл Do While … Loop и цикл Do Until … Loop. Оба они могут быть с предусловием или с постусловием.
Циклы Do While | Until имеет следующий синтаксис:
где
Do – ключевое слово;
While | Until – ключевые слова, указывающие тип цикла;
Выражение – выражение условия, принимающее значение True или False;
Loop – ключевое слово, указывающее на окончание цикла.
Цикл Do While выполняется до тех пор, пока выражение условия имеет значение True.
Пример цикла Do While, реализующего алгоритм программы, аналогичный приведенной в примере для цикла For с досрочным прерыванием:
Option Explicit
Dim Sum As Integer
Dim j As Integer
Sum = 2
Do While Sum < 7
Sum = Sum + j
j = j + 1
Loop
TextBox1.Text = Sum
В результате выполнения этого кода в текстовом поле будет выведено вычисленное значение переменной Sum равное 8.
В отличие от цикла Do While цикл Do Until выполняется до тех пор, пока выражение условия имеет значение False.
Пример цикла Do Until, реализующего алгоритм программы аналогичный приведенному выше:
Option Explicit
Dim Sum As Integer
Dim j As Integer
Sum = 2
Do Until Sum >7
Sum = Sum + j
j = j + 1
Loop
TextBox1.Text = Sum
В результате выполнения этого примера в текстовом поле будет выведено вычисленное значение переменной Sum равное 8.
Иногда бывает необходимо прервать цикл Do … Loop, если выполняется какое-либо дополнительное условие. Это может быть сделано с помощью оператора Exit Do. Например:
Option Explicit
Dim Sum As Integer
Dim j As Integer
Sum = 2
Do Until Sum > 7
Sum = Sum + j
j = j + 1
If j > 3 Then
Exit Do ‘ Досрочный выход из цикла Do … Loop
End If
Loop
TextBox1.Text = Sum
В этом примере цикл с условием досрочно прерывается, если выполняется дополнительное условие j > 3. В результате выполнения программного кода переменная Sum будет иметь значение, равное 8.
Используя цикл с условием можно организовать бесконечный цикл. Иногда это бывает необходимо, а иногда это происходит из-за ошибки пользователя. Для создания бесконечного цикла условное выражение должно быть таким, которое никогда не выполняется или выполняется всегда. Например:
Do Until 1
Операторы
Loop
Выйти из такого бесконечного цикла и прервать работу программы можно нажав комбинацию клавиш <Ctrl+Break>.
Источник