ByRef Argument类型与布尔不匹配

时间:2014-02-13 08:31:03

标签: vba ms-access access-vba

我在Access表单中有一些vba代码,在以下情况下调用时会产生“ByRef Argument type mismatch”错误。

我有一个小功能

NullAndHide(ctl as control,displayitem as Boolean) 

当我这样称呼它时,它按预期工作。

Call NullAndHide(Me.Control,True)

但是,如果我使用以下case语句尝试根据另一个控件设置displayitem的值:

Dim PerPersonOption, PerRoomOption As Boolean

    Select Case PriceType_ID
Case Is = 1 'Per Person
    PerPersonOption = True
    PerRoomOption = False
Case Is = 2 'Per Room
    PerPersonOption = False
    PerRoomOption = True
End Select

然后

Call NullAndHide(Me.Control,PerPersonOption)我收到错误:

ByRef参数类型不匹配

我用

测试了PerPersonOption的值
msgBox PerPersonOption 

并返回正确的布尔值。

我的函数需要一个布尔值,我给它一个布尔值 - 那我为什么会出现这个错误?

1 个答案:

答案 0 :(得分:5)

当声明Dim PerPersonOption, PerRoomOption As Boolean时,PerRoomOption是布尔类型,但PerPersonOption是变体。

尝试使用Dim PerPersonOption As Boolean, PerRoomOption As Boolean

enter image description here