为什么以下case语句在以下循环中不起作用?

时间:2019-02-25 00:22:03

标签: vba loops ms-access

当前,我正在为一个进程编写一个循环,该循环记录数据列表并执行某些操作。我想使用case语句来完成此操作。

我的代码有什么问题?我的语法有问题吗?

Data : An_Array := (
   1 => (Name => +"Joe",    Value => 5531 ),
   2 => (Name => +"Adam",   Value => 2341),
   3 => (Name => +"Bernie", Value => 122),
   4 => (Name => +"Walter", Value => 1234),
   5 => (Name => +"David",  Value => 19),
   6 => (Name => +"David",  Value => 42),
   7 => (Name => +"David",  Value => 5));

1 个答案:

答案 0 :(得分:1)

关于:

Select Case me!Model
    Case Me!Model Like "*Everflo*"
        do something

case中的表达式是针对select中的对象进行检查的。不幸的是,您的case中的表达式是一个 boolean 值(有点类似),因此不可能匹配me!Model中的任何值。您有效拥有的是:

If me!Model = (Me!Model Like "*Everflo*")
    do something

select/case的用例通常采用以下形式:

Select Case me!Model
    Case "Everflow"
        do something

以便可以将case对象与select对象正确匹配。

我认为这种情况下的最佳解决方案(因为您正在执行“看起来像”而不是“等于”比较)只是恢复为一个更简单的条件构造:

If Me!Model Like "*Everflo*"
    do something
ElseIf Me!Model Like "*Platinum*"
    do something else
End If