目录:
- 下面的例程演示没有可选的Else子句的If-Then结构:
- 另一种解决上述问题的方法是使用Else从句。下面是使用If-Then-Else结构记录的相同例程:
- 在前面的例子中,例程中的每个语句都被执行。一旦条件成立,一个稍微有效的结构就会退出程序。例如,早上,程序应该显示“早上好”消息,然后退出 - 而不会评估其他多余的情况。像这样的小程序,你不必担心执行速度。但对于速度至关重要的大型应用程序,您应该了解If-Then结构的另一个语法。
- Sub ShowDiscount()Dim Quantity As Long Dim Double Discount Double Quantity = InputBox(“Enter Quantity:”)If Quantity > 0然后折扣= 0 1如果数量> = 25那么折扣= 0 15如果数量> = 50那么折扣= 0 2如果数量> = 75那么折扣= 0 25 MsgBox“Discount:”&Discount End Sub注意,这个例程中的每个If-Then语句都被执行,并且折扣的值可以随着语句的执行而改变。但是,例程最终会显示折扣的正确值,因为If-Then语句按升序折扣值的顺序排列。
视频: Excel VBA IF THEN Statement (with ELSEIF & Looping in cells) 2024
If-Then是VBA最重要的控制结构。你可能会每天使用这个命令。当您想要有条件地执行一个或多个语句时,请使用If-Then结构。如果包含可选的Else子句,如果您正在测试的条件是 而不是 ,则可以执行一个或多个语句。这是一个简单的CheckUser过程,记录使用If-Then-Else结构:
<!如果用户名=“Satya Nadella”然后MsgBox(“Welcome Satya …”)'… [更多代码] … Else MsgBox(“请输入您的姓名:”) “抱歉。只有Satya Nadella可以运行这个。 “End If End SubIf-Then examples
下面的例程演示没有可选的Else子句的If-Then结构:
Sub GreetMe()If Time <0.5 then MsgBox”Good Morning“End Sub
GreetMe过程使用VBA的Time函数获取系统时间。如果当前时间少于。 5,例程显示友好的问候。如果时间大于或等于。 5,例程结束,没有任何反应。
Sub GreetMe2()If Time = 0. 5然后MsgBox“Good Afternoon”End Sub
注意> =(大于或等于)用于第二个If-Then语句。这确保了整个一天的覆盖。如果>(大于)被使用,如果这个程序正好在中午12点执行,则不会出现任何消息。这是不太可能的,但有了这样一个重要的计划,你不想冒任何的机会。
另一种解决上述问题的方法是使用Else从句。下面是使用If-Then-Else结构记录的相同例程:
Sub GreetMe3()If Time <0. 5 Then MsgBox“Good Morning”Else _ MsgBox“Good Afternoon”End Sub
注意行在前面的例子中使用了连续字符(下划线)。 If-Then-Else陈述实际上是一个陈述。 VBA提供了使用End If语句的If-Then-El构造的稍微不同的编码方式。因此,GreetMe过程可以被重写为
<! - 3 - >
Sub GreetMe4()如果时间<0.5然后MsgBox“早上好”否则MsgBox“下午好”结束如果结束小组事实上,您可以插入任何数量的语句下如果部分和任何数量的陈述在其他部分。这个语法更容易阅读,并使语句更短。
如果您需要扩展GreetMe例程以处理三个条件:上午,下午和晚上,该怎么办?您有两个选择:使用三个If-Then语句或使用
嵌套的 If-Then-Else结构。 嵌套 意味着在另一个If-Then-Else结构中放置一个If-Then-Else结构。第一种方法,使用三个If-Then语句更简单: Sub GreetMe5()Dim Msg As String If Time = 0 5 and Time = 0 75然后Msg =“Evening”MsgBox“Good”&Msg End Sub
使用一个变量添加一个新的扭曲。 Msg变量根据一天的时间获取不同的文本值。 MsgBox语句显示问候语:早上好,下午好或晚上好。
下面的例程执行相同的操作,但使用If-Then-End If结构:
Sub GreetMe6()Dim Msg As String If Time = 0。5 and Time = 0. 75然后Msg =“Evening” End If MsgBox“Good”&Msg End Sub
使用ElseIf
在前面的例子中,例程中的每个语句都被执行。一旦条件成立,一个稍微有效的结构就会退出程序。例如,早上,程序应该显示“早上好”消息,然后退出 - 而不会评估其他多余的情况。像这样的小程序,你不必担心执行速度。但对于速度至关重要的大型应用程序,您应该了解If-Then结构的另一个语法。
以下是如何使用以下语法重写GreetMe例程的方法:
Sub GreetMe7()Dim Msg As String If Time = 0 5 and Time <0. 75 Then Msg =“Afternoon”Else Msg =“Evening “End If MsgBox”Good“&Msg End Sub
当条件为true时,VBA执行条件语句,并且If结构结束。换句话说,这个过程比以前的例子更有效率。权衡是代码更难以理解。
另一个If-Then例子
这是另一个使用If-Then结构的简单形式的例子。此过程会提示用户输入一个数量,然后根据用户输入的数量显示相应的折扣:
Sub ShowDiscount()Dim Quantity As Long Dim Double Discount Double Quantity = InputBox(“Enter Quantity:”)If Quantity > 0然后折扣= 0 1如果数量> = 25那么折扣= 0 15如果数量> = 50那么折扣= 0 2如果数量> = 75那么折扣= 0 25 MsgBox“Discount:”&Discount End Sub注意,这个例程中的每个If-Then语句都被执行,并且折扣的值可以随着语句的执行而改变。但是,例程最终会显示折扣的正确值,因为If-Then语句按升序折扣值的顺序排列。
以下过程通过使用替代ElseIf语法来执行相同的任务。在这种情况下,例程在执行真实条件语句后立即结束:<数字> <数字> <数量> <数量> <数量> <数量>那么Discount = 0。1 ElseIf Quantity> = 25 And Quantity <50 then Discount = 0. 15 ElseIf Quantity> = 50 And Quantity <75 then Discount = 0 2 ElseIf Quantity> = 75 Then Discount = 0 25 End If MsgBox“Discount: Discount End Sub
这些多个If-Then结构相当麻烦。您可能希望仅将If-Then结构用于简单的二元决策。