您的位置首页百科知识

VB中如何使用select case语句

语法

Select Case <指示变量或表达式>

VB中如何使用select case语句

<默认语句组,以上语句组都因情形不符合实际时执行>

End Select

其中,表述情形的关键字,有IS和TO,多个情形要并列在一起时,使用逗号(英文)连接。当省略Case Else语句并且语句组都因情形不符合实际时,语句的执行,会直接到达End Select。如果在执行语句的时候,有需要跳过没有必要再执行的语句而直接结束Select Case的情况时,请使用exit select。

VB中如何使用select case语句

注意

在“<指示变量或表达式>”不是True或False关键字时,逻辑运算(And、Or、Not)会没有意义。因为逻辑运算的结果是True或False,不是表述具体情况的值或者范围。需要比较大小时,请使用IS、To关键字。以上为了给出一个能够通用的语法而如此表述。

在“<指示变量或表达式>”是True或False关键字时,Is、To关键字没有意义。

以上两种情况,切记不要搞混。

嵌套

各语句组中也可以写入完整的Select Case语句,像For循环中嵌套一个二级循环一样。别误会,Select Case不是循环语句,是条件选择语句,与IF...ELSEIF...ELSEIF...END IF类似。

基本用法

Private Sub main()

Select Case InputBox("请输入你希望的天气,从晴天、多云、阴天、阵雨、小雨、小雪、冰雹中选一个填入。", "请输入你希望的天气", "晴天")

Case "晴天"

MsgBox "哇哦!你喜欢的是晴天啊,祝你天天好心“晴”~!"

Case "多云"

MsgBox "喜欢多云的天气,是因为比较怕紫外线吗?"

Case "阴天"

MsgBox "为什么喜欢阴天呢?真令人好奇啊~!"

Case "阵雨"

MsgBox "为什么喜欢阵雨天呢?真令人好奇啊~!"

Case "小雨"

MsgBox "为什么喜欢小雨天呢?真令人好奇啊~!"

Case "小雪"

MsgBox "为什么喜欢小雪天呢?真令人好奇啊~!"

Case "冰雹"

MsgBox "为什么喜欢冰雹天呢?真令人好奇啊~!"

Case Else

MsgBox "不可以酱紫!只能从我给出的几种中挑选一个填入!"

End Select

End Sub

使用关键字IS

Private Sub main()

Select Case Day(Now)

Case Is <= 10

MsgBox "目前是本月上旬!"

Case Is > 20

MsgBox "目前是本月下旬!"

Case Else

MsgBox "目前是本月中旬!"

End Select

End Sub

VB中如何使用select case语句

<以上代码在VB6.0测试通过>

使用关键字TO

Private Sub main()

Select Case Weekday(Now)

Case 1, 7

MsgBox "今天是周末!"

Case 2 To 6

MsgBox "今天不是周末!"

End Select

End Sub

<以上代码在VB6.0测试通过>

关键字IS和TO可以根据需要,在同一条情形中一起使用,例如

Case Is<=5,8 to 10,Is>20

不过要注并宏意的是,TO表示的区间,是闭区间,不适用于开区间(或半闭半开区间)。如果一定要用select Case来确定数值在哪个区间内,可以这么做:

Private Sub main()

On Error GoTo err

Dim num As Single

num = InputBox("请输入!")

Select Case num

Case Is <= 1

MsgBox "这个数不大于1"

Case Is < 3

MsgBox "这个数在1和3之间的开区间内"

Case Is < 5

MsgBox "这个数在3和5之间的半闭半开区间内"

Case Is <= 7

MsgBox "这个数在5和7之间的闭区间内"

Case Is > 7

MsgBox "这个数大于7"

End Select

Exit Sub

err:

MsgBox "这个不是可比较的数字"

End Sub

此时,各Case不能随便对碧则换顺序。虽然这个可以达到我们想要的效果,却因为不够严谨,让我忧心忡忡。那么什么是最严谨的呢?请看高级用法。

高级用法

语法(这里只是为了更好的理解,稍稍变一下表述,不改变实意。)

Select Case true

Case <逻辑运算表达式1>

<语句组1>

Case <逻辑运算表达式2>

<语句组2>

....

Case <逻辑运算表达式n>

<语句组n>

Case Else

<默认语句组,当以上任何逻辑运算都为False时执行>

End Select

在此语法下,悔蔽棚Is、To关键字没有意义,Is的值为true(Is是变量吗?这个问题真的好让人回味啊)

只要逻辑运算表达式的运算结果为true,就执行该Case下的语句组。那么,上面的例子就这么改。

Private Sub main()

On Error GoTo err

Dim num As Single

num = InputBox("请输入!")

Select Case True

Case num >= 5 And num <= 7

MsgBox "这个数在5和7之间的闭区间内"

Case num < 3 And num > 1

MsgBox "这个数在1和3之间的开区间内"

Case num > 7

MsgBox "这个数大于7"

Case num < 5 And num >= 3

MsgBox "这个数在3和5之间的半闭半开区间内"

End Select

Exit Sub

err:

MsgBox "这个不是可比较的数字"

End Sub

可以看到,顺序被我随意变动了,测试也通过了。那么,爱琢磨的我,又发现一个问题:Select Case True可以改成Select Case False吗?答案是,可以。这里就不作示例了,只给出语法

Select Case False

Case <逻辑运算表达式1>

<语句组1>

Case <逻辑运算表达式2>

<语句组2>

....

Case <逻辑运算表达式n>

<语句组n>

Case Else

<默认语句组,当以上任何逻辑运算都为true时执行>

End Select

只要逻辑运算表达式的运算结果为False,就执行该Case下的语句组。