Excel vba if then statement (and a useful tip)

Автоматизация рутины в microsoft excel при помощи vba

VBA If Statement

If Then

VBA If Statements allow you to test if expressions are TRUE or FALSE, running different code based on the results.

Let’s look at a simple example:

This tests if the value in Range A2 is greater than 0. If so, setting Range B2 equal to “Positive”

Note: When testing conditions we will use the =, >, <, <>, <=, >= comparison operators. We will discuss them in more detail later in the article.

Here is the syntax for a simple one-line If statement:

To make it easier to read, you can use a character (underscore) to expand the If Statements to two lines (as we did in the above picture):

End If

The above “single-line” if statement works well when you are testing one condition. But as your IF Statements become more complicated with multiple conditions, you will need to add an “End If” to the end of the if statement:

Here the syntax is:

The End If signifies the end of the if statement.

Now let’s add in an ElseIF:

Задачи[править]

Задача 1править

С клавиатуры вводится число типа Double. Вычислить косинус данного числа в градусах и вывести ответ на экран в виде: . Например, при вводе числа 60 результат равняется 0.5. Для ввода константы Pi (Пи) воспользуетесь выражением: WorksheetFunction.Pi

Задача 2править

С клавиатуры вводится целое четырёхзначное число. Найти сумму его цифр и вывести ответ в виде:

С клавиатуры вводятся две строки. Вывести на экран слово False, если хотя бы одна из строк пустая, либо если первая строка больше второй, и слово True во всех остальных случаях.

Задача 1править

Решение  

SubMy1()
DimXAsDouble
DimResAsDouble
X=InputBox("Введите значение угла в градусах:")
Res=Cos(X*WorksheetFunction.Pi180)
MsgBox("Cos "&X&" градусов = "&Res)
EndSub

Задача 2править

Решение  

SubMy2()
DimXAsInteger
DimTAsByte'для экономии памяти вместо Integer
DimHAsByte
DimDAsByte
DimOAsByte
DimSummaAsByte
X=InputBox("Введите целое четырёхзначное число:")
T=X\1000
H=(X-1000*T)\100
D=(X-1000*T-100*H)\10
O=XMod10
Summa=T+H+D+O
MsgBox("Сумма цифр числа "&X&" равна "&Summa)
EndSub

Операторы ветвления VBA: простой выбор

До сих пор рассматривались процедуры и функции, которые VBA выполняет в линейном порядке — VBA начинает выполнение кода с первого оператора после строки объявления процедуры (функции) и продолжает выполнять каждый оператор построчно до тех пор, пока не будет достигнут оператор End Sub (End Function). Такой линейный алгоритм можно представить нижеследующей блок-схемой:

Однако довольно часто встречаются ситуации, когда необходимо, чтобы процедуры или функции выполняли различные действия при разных условиях. Такую ситуацию иллюстрируют следующие блок-схемы:

Операторы, выполняющие роль ветвления программы на основании какого-либо условия, называются операторами условного перехода.

Простейшими операторами условного перехода являются операторы If..Then; If..Then..Else. Первый оператор позволяет выбирать единственную ветвь процедуры (левая блок-схема), тогда как второй дает возможность выбирать из двух альтернативных ветвей кода процедуры (правая блок-схема) на основе оценки того, является ли условие равным True или False.

Синтаксис If..Then

Вариант 1: If Condition Then Statements

Вариант 2: If Condition Then Statements End If

Condition — логическое выражение;

Statements — один, несколько или ни одного оператора VBA.

Первый вариант требует написания оператора в одну строку, при этом в секции Statements можно указывать несколько операторов, разделяя их двоеточием.

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то операторы секции Statements пропускаются и выполняется код, следующий за этой секцией.

Ниже приведен листинг элементарного использования первого варианта написания If..Then:

А теперь — второй вариант:

Обратите внимание, что операторы секции Statements написаны с использованием отступа (используется табуляция). Это важный момент

Следует сразу приучать себя к подобному оформлению программного кода — это повышает его удобочитаемость и значительно облегчает поиск ошибок.

Синтаксис If..Then..Else

Вариант 1: If Condition Then Statements Else ElseStatements

Вариант 2: If Condition Then Statements Else ElseStatements End If

Condition — логическое выражение;

Statements, ElseStatements — один, несколько или ни одного оператора VBA.

По аналогии с If..Then — первый вариант требует написания оператора в одну строку, при этом в секциях Statements и ElseStatements можно указывать несколько операторов, разделяя их двоеточием.

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то выполняются операторы секции ElseStatements.

Следует сказать, что блок операторов If..Then..Else (Вариант 2) легче читать и понимать. Поэтому, советую использовать именно этот вариант, даже если в секциях Statements и ElseStatements будет находиться по одному оператору.

Использование If Then Else с циклами в VBA

До сих пор мы рассматривали несколько примеров, которые помогают понять, как операторы «IF-THEN» работают в VBA, однако бесполезны в практическом мире.

Если мне нужно оценивать учащихся, я легко могу сделать это с помощью функций Excel.

Итак, давайте рассмотрим несколько полезных и практических примеров, которые помогут вам автоматизировать некоторые вещи и повысить эффективность.

Пример 1. Сохраните и закройте все книги, кроме активной.

Если у вас открыто много книг и вы хотите быстро закрыть все, кроме активной книги, вы можете использовать приведенный ниже код,

Sub SaveCloseAllWorkbooks () Dim wb As Workbook для каждого wb в рабочих книгах При ошибке возобновить следующий Если wb.Name ActiveWorkbook.Name Then wb.Save wb.Close End If Next wb End Sub

Приведенный выше код сохранит и закроет все книги (кроме активной).

Он использует цикл For Next для просмотра коллекции всех открытых книг и проверки имени с помощью условия IF.

Если имя не совпадает с именем активной книги, она сохраняется и закрывается.

Если в какой-либо из книг есть код VBA, и вы не сохранили его как .xls или .xlsm, вы увидите предупреждение (поскольку коды vba теряются при сохранении в формате .xlsx).

Пример 2 — Выделение ячеек с отрицательными значениями

Предположим, у вас есть столбец, полный чисел, и вы хотите быстро выделить все ячейки с отрицательными значениями красным цветом. Это можно сделать с помощью приведенного ниже кода.

Sub HighlightNegativeCells () Dim Cll As Range для каждого Cll в выбранном Если Cll.Value <0 Тогда Cll.Interior.Color = vbRed Cll.Font.Color = vbWhite End If Next Cll End Sub

В приведенном выше коде используется цикл For Each и проверяется каждая ячейка в выбранном вами выборе. Если в ячейке указано отрицательное значение, она выделяется красным цветом с белым шрифтом.

Пример 3 — Скрыть весь лист, кроме текущего

Если вы хотите быстро скрыть все рабочие листы, кроме активного, вы можете использовать следующий код:

Sub HideAllExceptActiveSheet () Dim ws As Worksheet для каждого ws в ThisWorkbook.Worksheets Если ws.Name ActiveSheet.Name Then ws.Visible = xlSheetHidden Next ws End Sub

В приведенном выше коде цикл For Each используется для просмотра набора листов. Он проверяет имя каждого рабочего листа и скрывает его, если это не активный рабочий лист.

Пример 4 — Извлечение числовой части из буквенно-цифровой строки

Если у вас есть буквенно-цифровые строки в ячейках, и вы хотите извлечь из них числовую часть, вы можете сделать это, используя приведенный ниже код:

Функция GetNumeric (CellRef As String) Dim StringLength As Integer StringLength = Len (CellRef) For i = 1 To StringLength If IsNumeric (Mid (CellRef, i, 1)) Then Result = Result & Mid (CellRef, i, 1) Next i GetNumeric = Результат Конечная функция

Этот код создаст в Excel настраиваемую функцию, которую можно использовать на листе (как обычную функцию).

Using a IF function with ELSE in VBA

In the example given above, we saw that the IF function would be able to carry out steps only if the condition evaluated to TRUE. But what if we wanted to specify the steps to be carried out when either of the conditions were met. One way to achieve branching out of an IF function is to use the ELSE statement. Simply put, the ELSE statement causes the application to execute the steps mentioned in the ELSE block when the condition specified in the IF clause evaluates to FALSE.

In the VBA code example below, the condition in the IF function evaluates to false, the steps mentioned in the ELSE block are executed with the result that the message “1 is less than 4” gets displayed on the screen. Multiple steps can be added to the block to have them all execute one after another.

1234567

Sub
IF_ELSEIF_FUNCTION()If
1 > 4 Then
Else
:
MsgBox «1 is less than 4»
End
If
End
Sub

Вложенные операторы If…Then

Иногда, при написании программ, возникает необходимость проверить не одно, а несколько условий, чтобы выполнить какое-нибудь действие. В таком случае, можно разместить (вложить) один оператор If…Then внутри другого.

Такое действие называется вложением операторов.

Принцип действия вложенных операторов, следующий:

  1. Если значение первого условия True, то программа переходит к следующей проверке (выполняется вложенное условие).
  2. Если значение первого условия False, то программа не будет выполнять вложенные операторы, а перейдёт к выполнению тех операторов, которые следуют после ключевого слова Else.

Оператор If…Then…Else

Оператор If…Then…Else
предназначен для передачи управления одному из блоков операторов в зависимости от результатов проверяемых условий.

Однострочная конструкция

Оператор If…Then…Else
может использоваться в однострочной конструкции без ключевых слов Else
, End If
.

Компоненты однострочной конструкции If…Then…

  • условие
    True
    или False
    ;
  • операторы
    условие
    возвращает значение True
    ;

Если компонент условие
возвращает значение False
, блок операторов конструкции If…Then…

Синтаксис многострочной конструкции If…Then…Else

If
Then
ElseIf
Then
Else
End If

Компоненты многострочной конструкции If…Then…Else
:

  • условие
    — числовое или строковое выражение, следующее за ключевым словом If
    или ElseIf
    и возвращающее логическое значение True
    или False
    ;
  • операторы
    — блок операторов кода VBA Excel, который выполняется, если компонент условие
    возвращает значение True
    .
  • пунктирная линия
    обозначает дополнительные структурные блоки из строки ElseIf Then
    и строки ;
  • блок операторов после ключевого слова Else
    выполняется в любом случае, но структурный блок кода из строки Else
    и строки не является обязательным и может быть пропущен.

Если компонент условие
возвращает значение False
, следующий за ним блок операторов конструкции If…Then…Else
пропускается и управление программой передается следующей строке кода.

Самый простой вариант многострочной конструкции If…Then…Else
:

If
Then
Else
End If

Пример 2

Sub primer2()
Dim d As Integer, a As String
d = InputBox(«Введите число от 1 до 40», «Пример 2», 1)
If d 10 And d 20 And d

Ветвление программ (условные операторы)

Для осуществления ветвления программ используются два основных оператора: If… Else… End If и Case…

Оператор If… Else… End If

По существу, оператор следует переводить как Если… Иначе… Конец Если.

1. Первичным следует считать использование так называемого неполного If. В этом случае не используется часть Else.

	If <условие> Then
	    ...
	End If

Таким образом, блок команд будет выполнен только когда будет истинным условие, заданное на входе оператора.

Пример, в котором переменная памяти x будет уменьшена в 10 раз, только если она превысила значение 10:

	If x > 10 Then
	    x = x/10
	End If

2. Часто встречается случай, когда нужно обработать данные одним из двух способов в зависимости от условия:

	If <условие> Then
	    ...
	Else
	    ...
	End If

Пример, в котором переменная памяти x возводится в квадрат, если она отрицательна, а иначе — в куб (ноль также будет возводиться в куб):

	If x < 0 Then
	    x = x^2
	Else
	    x = x^3
	End If

3. Наконец, ряд языков (как и VBA) позволяет составлять многоуровневую конструкцию без использования вложения If.

	If a = 1 Then
	    ...
	ElseIf a = 2 Then
	    ...
	ElseIf b > 0 Then
	    ...
	Else
	    ...
	End If

Функция IIf()

Так как чрезвычайно часто встречается ситуация, когда единственное назначение условного оператора — изменение переменной памяти по условию, все развитые языки содержат функцию IIf().
Она решает названную задачу в гораздо более компактном виде.

Пример, в котором переменной х присуждается нулевое значение, если она отрицательна и единица во всех остальных случаях:

x = IIf(x Недостаток функции заключается в том, что она всегда вычисляет оба значения (и для истинного, и для ложного случая), а, значит, работает сравнительно медленнее.
Также, в некоторых случаях подобные вычисления могут приводить к делению на ноль, если программист не предусмотрит этого заранее.

Оператор Case

В начале конструкции производится вычисление какого-либо выражения, значение которого проверяется на соответствие несколько раз:

	Select Case <проверяемое выражение>
	Case значение1
	    
	]
	...
	]
	End Select

Using Else With the VBA If Statement

The VBA Else statement is used as a catch all. It basically means “if no conditions were true” or “everything else”. In the previous code example, we didn’t include a print statement for a fail mark. We can add this using Else.

' https://excelmacromastery.com/
Sub UseElse()
    
    If Marks >= 85 Then
        Debug.Print "High Destinction"
    ElseIf Marks >= 75 Then
        Debug.Print "Destinction"
    ElseIf Marks >= 55 Then
        Debug.Print "Credit"
    ElseIf Marks >= 40 Then
        Debug.Print "Pass"
    Else
        ' For all other marks
        Debug.Print "Fail"
    End If
    
End Sub

So if it is not one of the other types then it is a fail.

Let’s write some code to go through our sample data and print the student and their classification:

' https://excelmacromastery.com/
Sub AddClass()
    
    ' get the last row
    Dim startRow As Long, lastRow As Long
    startRow = 2
    lastRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
    
    Dim i As Long, Marks As Long
    Dim sClass As String

    ' Go through the marks columns
    For i = startRow To lastRow
        Marks = Sheet1.Range("C" & i).Value
        ' Check marks and classify accordingly
        If Marks >= 85 Then
            sClass = "High Destinction"
        ElseIf Marks >= 75 Then
            sClass = "Destinction"
        ElseIf Marks >= 55 Then
            sClass = "Credit"
        ElseIf Marks >= 40 Then
            sClass = "Pass"
        Else
            ' For all other marks
            sClass = "Fail"
        End If
    
        ' Write out the class to column E
        Sheet1.Range("E" & i).Value = sClass
    Next
    
End Sub

The results look like this with column E containing the classification of the marks

Results

Remember that you can try these examples for yourself with the code download from the of this post.

Description

The Microsoft Excel IF-THEN-ELSE statement can only be used in VBA code. It executes one set of code if a specified condition evaluates to TRUE, or another set of code if it evaluates to FALSE.

The IF-THEN-ELSE statement is a built-in function in Excel that is categorized as a Logical Function. It can be used as a VBA function (VBA) in Excel. As a VBA function, you can use this function in macro code that is entered through the Microsoft Visual Basic Editor.

Please read our IF function (WS) page if you are looking for the worksheet version of the IF statement as it has a very different syntax.

Subscribe

If you want to follow along with this tutorial, download the example spreadsheet.

Оператор If…Then…Else

Оператор If…Then…Else предназначен для передачи управления одному из блоков операторов в зависимости от результатов проверяемых условий.

Однострочная конструкция

Оператор If…Then…Else может использоваться в однострочной конструкции без ключевых слов Else, End If.

Компоненты однострочной конструкции If…Then

  • условие — числовое или строковое выражение, возвращающее логическое значение True или False;
  • операторы — блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True;

Если компонент условие возвращает значение False, блок операторов конструкции If…Then… пропускается и управление программой передается следующей строке кода.

Пример 1

Subprimer1()

DimdAsInteger,aAsString

d=InputBox(“Введите число от 1 до 20”,“Пример 1”,1)

Ifd>10Thena=“Число “&d&” больше 10″

MsgBoxa

EndSub

Многострочная конструкция

Синтаксис многострочной конструкции If…Then…Else

<strong>If<strong>условие<strong>Then<strong>

операторы

<strong>ElseIf<strong>условие<strong>Then<strong>

операторы

————————

<strong>Else<strong>

операторы

<strong>EndIf<strong>

Компоненты многострочной конструкции If…Then…Else:

  • условие — числовое или строковое выражение, следующее за ключевым словом If или ElseIf и возвращающее логическое значение True или False;
  • операторы — блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True.
  • пунктирная линия обозначает дополнительные структурные блоки из строки ElseIf Then и строки ;
  • блок операторов после ключевого слова Else выполняется в любом случае, но структурный блок кода из строки Else и строки не является обязательным и может быть пропущен.

Если компонент условие возвращает значение False, следующий за ним блок операторов конструкции If…Then…Else пропускается и управление программой передается следующей строке кода.

Самый простой вариант многострочной конструкции If…Then…Else:

<strong>If<strong>условие<strong>Then<strong>

операторы

<strong>Else<strong>

операторы

<strong>EndIf<strong>

Пример 2

Subprimer2()

DimdAsInteger,aAsString

d=InputBox(“Введите число от 1 до 40”,“Пример 2”,1)

Ifd<11Then

a=“Число “&d&” входит в первую десятку”

ElseIfd>10Andd<21Then

a=“Число “&d&” входит во вторую десятку”

ElseIfd>20Andd<31Then

a=“Число “&d&” входит в третью десятку”

Else

a=“Число “&d&” входит в четвертую десятку”

EndIf

MsgBoxa

EndSub

Вложенный IF Then (несколько операторов IF Then)

До сих пор мы использовали один оператор IF Then.

Если вам нужно проверить несколько условий, вы можете использовать:

  • Множественные условия ЕСЛИ
  • Оператор If Then Else
  • IF Then Else Если Else построить

Позвольте мне показать вам, чем они отличаются и как использовать это в Excel VBA.

Несколько операторов IF Then

Давайте возьмем тот же пример использования результатов учащегося.

Если учащийся набрал меньше 35, отображается сообщение «Неудача», если оценка больше или равна 35, отображается сообщение «Пройдено».

Для этого мы можем использовать приведенный ниже код:

Sub CheckScore () Если Range ("A1"). Value = 35 Then MsgBox "Pass" End Sub

Вы можете использовать несколько операторов IF Then, как показано выше. Хотя это работает, это не пример хорошего кодирования (альтернативы вы увидите ниже).

Если вы решите использовать это, помните, что эти утверждения должны быть независимыми или взаимоисключающими

Здесь важно знать, что в приведенной выше конструкции оцениваются все операторы IF, а те, в которых условие истинно, выполняется код

Таким образом, даже если первый оператор IF верен, второй все равно будет оцениваться.

IF Then Else Утверждение

Предположим, на этот раз, вместо того, чтобы просто отображать сообщение Pass / Fail, у нас есть еще одно условие.

Если учащийся набрал меньше 35, отображается сообщение «Неудача», если оценка больше или равна 35, отображается сообщение «Пройдено», а если оценка больше 80, отображается сообщение. «Пройдено с отличием».

Для этого мы можем использовать приведенный ниже код:

Sub CheckScore () If Range ("A1"). Value <35 Then MsgBox "Fail" Else If Range ("A1"). Value <80 Then MsgBox "Pass" Else MsgBox "Pass, with Distinction" End If End If End Sub

В приведенном выше коде мы использовали несколько операторов IF (вложенный IF Then) с помощью Else.

Таким образом, внутри конструкции «IF Then Else» есть конструкция «IF Then Else». Этот тип вложения позволяет проверять наличие нескольких условий и запускать соответствующий блок кода.

IF Then Else Если Else Заявление

Приведенный выше код (который мы видели в предыдущем разделе) можно дополнительно оптимизировать с помощью оператора ElseIf.

Вот что мы пытаемся сделать: если учащийся набрал меньше 35, отображается сообщение «Неудача», если оценка больше или равна 35, отображается сообщение «Пройдено», а если оценка больше 80, отображается сообщение «Пройдено с отличием».

Sub CheckScore () If Range ("A1"). Value <35 Then MsgBox "Fail" ElseIf Range ("A1"). Value <80 Then MsgBox "Pass" Else MsgBox "Pass, with Distinction" End If End Sub

В приведенном выше коде используется ElseIf, который позволяет нам сохранять все условия в одном единственном операторе IF Then.

Функция IIF

VBA имеет функцию, аналогичную функции Excel If. В Excel вы часто используете функцию If следующим образом:

= ЕСЛИ (F2 =»»,»», F1 / F2)

= If (условие, действие, если ИСТИНА, действие, если ЛОЖЬ).

VBA имеет функцию IIf, которая работает так же. Давайте посмотрим на примере. В следующем коде мы используем IIf для проверки значения переменной val. Если значение больше 10, мы печатаем ИСТИНА, в противном случае мы печатаем ЛОЖЬ.

В нашем следующем примере мы хотим распечатать «Удовлетворитеьно» или «Незачет» рядом с каждым студентом в зависимости от их баллов. В первом фрагменте кода мы будем использовать обычный оператор VBA If, чтобы сделать это.

В следующем фрагменте кода мы будем использовать функцию IIf. Код здесь намного аккуратнее.

Функция IIf очень полезна для простых случаев, когда вы имеете дело с двумя возможными вариантами.

Использование Nested IIf

Вы также можете вкладывать IIf-операторы, как в Excel. Это означает использование результата одного IIf с другим. Давайте добавим еще один тип результата в наши предыдущие примеры. Теперь мы хотим напечатать «Отлично», «Удовлетворительно» или «Незачетт» для каждого студента.

Используя обычный VBA, мы сделали бы это так

Используя вложенные IIfs, мы могли бы сделать это так

Использование вложенного IIf хорошо в простых случаях, подобных этому. Код прост для чтения и, следовательно, вряд ли вызовет ошибки.

Чего нужно остерегаться

Важно понимать, что функция IIf всегда оценивает как Истинную, так и Ложную части выражения независимо от условия. В следующем примере мы хотим разделить по баллам, когда он не равен нулю

Если он равен нулю, мы хотим вернуть ноль

В следующем примере мы хотим разделить по баллам, когда он не равен нулю. Если он равен нулю, мы хотим вернуть ноль.

Однако, когда отметки равны нулю, код выдаст ошибку «Делить на ноль». Это потому, что он оценивает как Истинные, так и Ложные утверждения. Здесь ложное утверждение, т.е. (60 / Marks), оценивается как ошибка, потому что отметки равны нулю.

Если мы используем нормальный оператор IF, он будет запускать только соответствующую строку.

Это также означает, что если у вас есть функции для ИСТИНА и ЛОЖЬ, то обе будут выполнены. Таким образом, IIF будет запускать обе функции, даже если он использует только одно возвращаемое значение. Например:

IF против IIf

В этом случае вы можете видеть, что IIf короче для написания и аккуратнее. Однако если условия усложняются, вам лучше использовать обычное выражение If. Недостатком IIf является то, что он недостаточно известен, поэтому другие пользователи могут не понимать его так же, как и код, написанный с помощью обычного оператора if.

Кроме того, как мы обсуждали в последнем разделе, IIF всегда оценивает части ИСТИНА и ЛОЖЬ, поэтому, если вы имеете дело с большим количеством данных, оператор IF будет быстрее.

Мое эмпирическое правило заключается в том, чтобы использовать IIf, когда он будет прост для чтения и не требует вызовов функций. Для более сложных случаев используйте обычный оператор If.

Example 2: Using AND / OR

You could specify multiple conditions within the same condition by using AND and OR. Instead of checking that , we could check that . This can be applied to the above example by checking if the bad weather is ‘some rain’ AND the rain coat is ready.

Sub ShouldIGoOutTodayEx2()
'Set the weather to good or bad
Good_Weather = False
'Set the Rain coat to ready or not
Rain_Coat_Ready = True
'Set the type of bad weather
Bad_Weather = "Some Rain"
If Good_Weather = True Then
    'if weather is good then go out
    MsgBox "Go Out"
Else
    'if weather is not good
    If Bad_Weather = "Some Rain" And Rain_Coat_Ready = True Then
    'If the bad weather is some rain AND the rain coat is ready then Go Out
            MsgBox "Go Out"
    ElseIf Bad_Weather = "Blizzard" Or Rain_Coat_Ready = False Then
    'if the bad weather is blizzard or the rain coat is not ready then Stay Home
        MsgBox " Stay Home"
    End If
End If
End Sub

For more on using AND and OR with If statements, see this article:

Операторы ввода и вывода[править]

Как уже упоминалось выше, MsgBox — процедура, которая используется для вывода информации на экран. Единственный параметр строкового типа — сообщение, которое необходимо вывести на экран. Тем не менее, если в качестве параметра указана переменная другого типа, то VBA сам преобразует её в тип строки. Нужно помнить, что процедура принимает ровно один параметр, то есть в процедуре MsgBox не может быть более одной переменной в списке вывода.

Чтобы вынести несколько переменных, их нужно преобразовать к строковому типу и объединить в одну строку путём конкатенации (сложения) строк. Для сложения строк мы можем использовать как знак &, так и знак +, как в языке Pascal.

Например, следующая процедура

Submy()
DimAAsString
A="Товар стоит "&1000&" рублей"
MsgBoxA
EndSub

выведет на экран текст «Товар стоит 1000 рублей».

Чтобы, наоборот, ввести информацию, мы можем использовать функцию InputBox(<текст>). В качестве параметра <текст> указывается строка — тот текст, который мы хотим видеть в окне ввода качестве подсказки.

Понравилась статья? Поделиться с друзьями:
Самоучитель Брин Гвелл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: