📜  VBA If then其他语句

📅  最后修改于: 2021-01-11 14:08:31             🧑  作者: Mango

如果其他,如果声明

如果然后,如果然后其他和如果其他如果语句允许程序员控制脚本或其部分之一的执行流程。

下图是大多数编程语言中常见的结构形式。

1.如果则声明

If Then语句包含一个布尔表达式,该布尔表达式允许一个或多个语句。

如果条件为True,则执行If条件下的语句。如果条件为False,则执行If循环之后的语句。

句法

If (Boolean_expression) Then
    Statement 1
    ........
    ........
    ........
    Statement n
End If

要在条件为True时运行一条语句,我们可以使用If语句的单行语法。

例如:

Sub FixDate () 
    myDate = #10/03/1997# 
    If myDate < Now Then myDate = Now 
End Sub

而要运行多行代码,则可以使用多行语法。此语法包括End If语句。

例如:

Sub AlertUser (value as Long) 
    If value = 1 Then 
    AlertLabel.ForeColor = "yellow" 
    AlertLabel.Font.Bold = True 
    AlertLabel.Font.Italic = True 
  End If 
End Sub 

流程图

让我们借助一个函数在两个Excel之间找到最大值。

Private Sub If_demo_Click ()
     Dim x As Integer
     Dim y As Integer
     x = 20
     y = 10
     If x > y Then 
        MsgBox "x is greater than y"
     End If 
End Sub

之后,执行上面的代码,您将获得如下输出:

x is greater than y 

这是If Then语句的更多示例。此VBA代码正在检查指定条件的评估结果为True还是False。

当条件评估为True时,您仅指定了要完成的步骤。在这种情况下,代码的结果将在屏幕上显示一个MsgBox。

并且,如果条件评估为False,则VBA代码将不执行任何操作,并且将立即跳过该行。

例如:

Sub evenOdd ()
If Range ("X1") Mod 2 = 0 Then 
MsgBox "X1 is even"
End If
End Sub

在上面的示例中,如果excel单元格中包含的数字除以2,其余数为零,则excel将显示一个MsgBox,该数字告诉该数字为偶数。

2. If Then Else陈述

If语句包含一个布尔表达式,该布尔表达式允许一个或多个语句,如果条件为True,则执行If条件下的语句。如果条件为假,则执行其他条件下的语句。

句法

If (Boolean_expression) Then
Statement 1
.........
.........
.........
Statement n
Else
Statement 1
.........
.........
Statement n
End If

根据以上语法,您可以根据条件的结果执行不同的任务。

例如:

Sub evenOdd ()
If Range ("A1") mod 2 = 0 Then
MsgBox "A1 is even"
Else
MsgBox "A1 is odd"
End If
End Sub

现在,当您运行VBA代码时,无论A1中的数值是多少,都将获得输出。您可以在上面的代码的以下屏幕截图中看到输出。

如果指定条件的结果为true,而另一组代码的值为false,则If ThenElse语句将执行一组代码。

If Then Else语句是excel中的内置函数,被归类为逻辑函数。它也可以在excel中用作VBA函数。您可以在通过Microsoft Visual Basic编辑器输入的宏代码中使用此函数。

流程图

让我们借助一个函数在两个Excel之间找到最大值。

Private Sub If_demo_Click ()
Dim x As Integer
Dim y As Integer
x = 20
y = 40
If x > y Then 
MsgBox "x is greater than y"
Else
MsgBox "y is greater than x"
End If 
End Sub

之后,执行上面的代码,您将获得如下输出:

y is greater than x

让我们再举一个例子来清除If Then Else语句。

例如,假设您要在Excel VBA中打印学生成绩合格或不合格。

Dim score As Integer, result As String
Score = Range ("A1").Value
If score >= 60 Then
Result = "Pass"
Else
Result = "Fail"
End If
Range ("B1").Value = result

如果分数大于或等于60,则Excel VBA作为结果返回通过,否则Excel VBA返回失败。

3. If ElseIf语句

If语句允许一个或多个包含布尔表达式的If Else语句。然后是默认的Else语句,当所有语句变为False时执行。

句法

If (Boolean_expression) Then
Statement 1
........
........
........
Statement n
ElseIf (Boolean_expression) Then
Statement 1
.........
.........
Statement n
ElseIf (Boolean_expression) Then
Statement 1
.........
.........
Statement n
Else
Statement 1
.........
.........
Statement n
End If

并非所有条件都可以简化为两个简单的陈述。您的代码中还有两个以上的选择。在这种情况下,可以使用ElseIf语句。

您可以使用一个以上的ElseIf部分,也可以使用两个以上的部分,如上面的语法所示。

流程图

让我们借助一个函数在两个Excel之间找到最大值。

Private Sub If_demo_Click ()
Dim x As Integer
Dim y As Integer
x = 40
y = 40
If x > y Then 
MsgBox "x is greater than y"
ElseIf y > x Then
MsgBox "y is greater than x"
Else
MsgBox "x and y are Equal"
End If 
End Sub

执行完上面的代码后,您将获得如下输出:

x and y are Equal

让我们来看一下If ElseIf语句的更多示例。

例如,假设您有一个带有“是”,“否”和“取消”选项的三个按钮对话框。

如果用户按下按钮,则将获取按钮值并向用户显示一条消息,告知用户按下了哪个按钮。

为此,VBA Else If语句的用法如下:

Sub Macro1()
 btnVal = MsgBox("Press a button and program will tell which button was pressed?", 3, "Demo")
 
   If btnVal = 1 Then
 
      MsgBox "User pressed Yes!"
 
   ElseIf btnVal = 2 Then
 
      MsgBox "User Pressed No!"
 
   Else
 
      MsgBox "User Pressed Cancel!"
 
   End If

End Sub

您可以看到,如何在If和ElseIf语句中评估btnVal变量,然后将通过另一个对话框将相应的消息发送给用户。

按下所有三个按钮中的任何一个按钮或您在代码中提供的任何键之后,您将获得以下输出: