如何在vba中使用select case语句?
关键点
- 使用 SELECT CASE,您可以测试多个条件,尤其是在处理两个以上条件时。
- 使用 SELECT CASE 编写的代码比标准条件代码更加结构化。
- 当需要调整代码中的一个或多个值时,更改它会更容易。
什么是 VBA 选择案例
VBA SELECT CASE 是用于测试多个条件的语句。在此语句中,您可以指定一个条件,然后指定在该条件为真时要执行的一些代码,然后指定第二个条件以及在该条件为真时要执行的一些代码。这样您可以指定多个条件和多个语句。
选择案例的语法
以下是编写 select case 语句时需要遵循的语法。
Select Case Test Expression Case (Condition to Test) Statement1 [Line of Code to Run if CASE 1 is TRUE] Case (Condition to Test) Statement1 [Line of Code to Run if CASE 2 is TRUE] Case Else Statement [Line of Code to Run if no CASE is TRUE] End Select
在 SELECT CASE 中,语法以关键字“Select”开始,以“End Select”结束。为了理解它的语法,我们需要将其分为四个部分:
- 在第一部分中,您需要指定测试所有条件的“测试表达式”。
- 之后,在SECOND部分,需要指定要测试的case(即要测试的条件)。
- 现在在第三部分中,您必须编写另一个案例,您必须测试第二部分中的条件是否不为真。
- 最后,在第四部分中,您必须指定当上述两种情况都不为 TRUE 时应出现的结果。
理解 select case 语句的简单示例
SELECT CASE 的语法是不言自明的,并且在编写代码时相当容易遵循。但我们还是举个例子来彻底理解一下吧。下面有一个简单的代码来测试单元格 A1 的值。
Sub SelectCaseExample1() Select Case Range("A1").Value Case "Yes" MsgBox "It's a Yes." Case "No" MsgBox "It's a No" Case Else MsgBox "Can't Say" End Select End Sub
现在让我们理解这段代码的每一行:
- 首先,您有 SELECT CASE 关键字和单元格 A1 用作测试条件的表达式。
- 其次,您有 CASE 关键字和条件(“是”)来从单元格 A1 进行检查,并且如果 case1 中提到的条件为真,则显示带有消息“It’s a yes”的消息框的代码。
- 第三,您再次拥有要从单元格 A1 中检查的关键字 case 和条件(“否”),以及如果情况二中提到的条件为真,则显示带有消息“It’s a no”的消息框的代码。
- 第四,您有 CASE ELSE 关键字和一行代码,用于在两种情况都不成立时显示带有“Can’t Say”消息的消息框。
- 第五,您可以使用 END SELECT 关键字来结束 SELECT CASE 语句。
相关: VBA 消息框
要点
- 它可以测试多个条件并根据结果执行一行代码。
- 使用 Is 关键字测试条件时,可以使用比较运算符(=、>、<、<>、>=、<=)。
- 您可以使用逗号来测试同一情况下的多个条件。
- 在单个案例中测试条件时,您还可以使用一系列数字。
- 当满足条件时,VBA 停止测试语句的其余情况。
- 您还可以在末尾添加一个 case else 部分,以便在不满足任何条件时执行一行代码。
- 您可以使用 CASE END 语句跳过。
更多使用示例 选择案例
是时候以不同的方式使用 SELECT CASE 了,这里有一些您可以学习的有用且重要的示例。
100 个 Excel 宏示例
1. 选择带有数字的案例
为 SELECT CASE 语句编写 VBA 代码时,可以使用运算符来比较值。现在,在下面的代码中,您可以使用 >、< 和 = 运算符来测试条件。
Sub SelectCaseExample1() Select Case Range("A1").Value Case Is >= 45 MsgBox "Pass" Case Is < 45 MsgBox "Fail" End Select End Sub
- 该语句的第一个情况检查单元格 A1 的值是否大于或等于 45,并返回一个包含消息“Pass”的消息框。
- 该语句的第二种情况检查单元格 A1 的值是否小于 45,并返回一个消息框,其中包含消息“失败”。
2. 选择具有数字范围的案例
您还可以使用一系列数字来测试条件。在下面的代码中,您有一个条件,在每种情况下都有一系列数字需要测试。
Sub SelectCaseExample2() Select Case Range(“A1”).Value Case 45 To 100 MsgBox “Pass” Case 0 To 44 MsgBox “Fail” Case Else MsgBox “Out of Range” End Select End Sub
- 该语句的第一种情况使用 45 到 100 之间的数字范围检查单元格 A1 中的数字,如果该值低于此范围,则返回“通过”。
- 第二条语句的范围为 0 到 44,用于测试单元格 A1 中的值,如果值低于此范围,则返回“失败”。
- 第三条语句是 case else,如果情况一和情况二为假,则显示一个消息框,其中显示消息“超出范围”。
3. 使用冒号运算符
为 SELECT CASE 编写代码时,可以使用冒号运算符将整个案例写在一行上。
在下面的代码中,该行以 case 开头,然后是要测试的条件,然后是冒号,然后在这种情况下执行的语句为 true。
Sub SelectCaseExample3() Select Case Range(“A1”).Value Case 45 To 100: MsgBox “Pass” Case 0 To 44: MsgBox “Fail” Case Else: MsgBox “Out of Range” End Select End Sub
4. 使用具有多个条件的 Select Case
就像为案例设置范围一样,您也可以指定多个值来测试条件。在下面的代码中,每种情况都有三个数字要测试。
Sub SelectCaseExample() Select Case Range("A1").Value Case 1, 3, 5 MsgBox "Yes" Case 2, 4, 6 MsgBox "No" Case Else MsgBox "Out of range" End Select End Sub
- 此代码的第一种情况将测试单元格值是否为 1、3 或 5,并在消息框中返回“Yes”。
- 此代码的第二种情况将测试单元格 A1 的值是否为 2、4 或 6。
5. 在自定义函数中使用 Select Case
为VBA 函数编写代码时也可以使用 SELECT CASE。
Function udfGrade(student_marks As Integer) Dim myGrade As String Select Case student_marks Case Is < 40: myGrade = “Bad” Case 41 To 50: myGrade = “Average” Case 51 To 60: myGrade = “Good” Case 61 To 80: myGrade = “Very Good” Case 81 To 100: myGrade = “Excellent” End Select udfGrade = myGrade End Function
在上面的函数中,有五个框来检查单元格中学生的分数。所有 5 种情况都使用数字范围并返回语句中定义的值。
6. 从嵌套条件中使用 Select Case
您还可以创建嵌套条件语句。我想说的是,您可以编写代码来测试所选案例的多个条件。
想象一下,如果您想编写可以根据两个不同单元格的值测试条件的代码。
Sub SelectCaseStatement() Select Case Range("A2") Case "Boy" Select Case Range("B2") Case "Commerce": MsgBox "Boy (Commerce)" Case "Science": MsgBox "Boy (Science)" End Select Case "Girl" Select Case Range("B2") Case "Commerce": MsgBox "Girl (Commerce)" Case "Science": MsgBox "Girl (Science)" End Select End Select End Sub
在上面的代码中,您有三个 case select 语句。有一个主要语句检查单元格 A2 的值是“Boy”还是“Girl”。
然后,根据结果,再执行两条指令并检查单元格 B2 的值是否为 Commerce 或 Science。
CHOOSE CASE 与IF THEN ELSE 语句
- 当您想要测试多个条件时,使用 SELECT CASE 而不是 IF-THEN 编写代码很容易。
- 与 IF-THEN 相比,即使在 SELECT CASE 语句中编辑和更改也很容易。