VBA Select Case语句执行顺序及代码结构选择咨询
关于VBA Select Case确保执行顺序的解决方案
第一种结构(单Select Case):
这是标准的Select Case用法,VBA实际会按代码中Case的书写顺序从上到下匹配条件。一旦找到第一个匹配的Case,执行对应的代码块后就会直接退出整个Select Case结构,后续的Case不会再被检查。
对应代码:Select Case My.Property Case "Foo" Apples Case "Bar" Oranges End Select这种结构下,
Oranges永远不会在Apples之后执行——因为My.Property要么是"Foo"(只执行Apples),要么是"Bar"(只执行Oranges),不可能同时触发两个Case。第二种结构(两个独立Select Case):
这是两个完全独立的判断逻辑,第一个Select Case检查"Foo"并执行Apples,第二个独立的Select Case检查"Bar"并执行Oranges。
对应代码:Select Case My.Property Case "Foo" Apples End Select Select Case My.Property Case "Bar" Oranges End Select这种结构下,只要
My.Property满足对应条件,两个代码块都会被执行(如果存在重叠匹配条件的场景),且严格按照代码顺序先执行Apples再执行Oranges。即使官方文档未明确Select Case内部的Case匹配顺序,这种独立结构也能保证执行顺序不受内部逻辑影响。
结论
如果你的需求是只要符合条件,Oranges必须在Apples之后执行(比如存在My.Property同时满足两个Case条件的场景),第二种结构是唯一能确保顺序的选择。如果My.Property的取值是互斥的(比如只能是"Foo"或"Bar"),两种结构在执行结果上没有区别,但第二种结构的逻辑更清晰,完全不受Select Case内部匹配顺序的潜在影响。
内容的提问来源于stack exchange,提问作者ebsf
相关产品推荐
相关产品推荐

