2014-02-13 86 views
2

我在Access窗體中有一些vba代碼,在以下情況下調用時會產生「ByRef參數類型不匹配」錯誤。ByRef參數類型與布爾值不匹配

我有一個小功能

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 

它返回正確的布爾值。

我的函數期望一個布爾值,我給它一個布爾值 - 那麼爲什麼我會得到這個錯誤?

回答

5

僅當聲明Dim PerPersonOption, PerRoomOption As BooleanPerRoomOption是布爾型的類型,但PerPersonOption是Variant。

嘗試使用Dim PerPersonOption As Boolean, PerRoomOption As Boolean

enter image description here

+3

的確,但你更好的只是把每個變量聲明與它自己昏暗的它自己的路線。我已經看到這些Dim快捷鍵出錯了很多次,最好避免它的陷阱。 –

+1

謝謝Simco! 我的理解是Dim x,y as z會聲明兩者都是z。我已經明確暗示每個選項,並按預期工作。不是每個捷徑都是最後的捷徑,它會出現。我會按照你和卡爾的建議,明確地聲明每個變量並在它自己的行中。 – Istari

+0

@Istari每個Dim的一行並不是必須的,只要記住總是將Dim var1作爲typeA,var2作爲typeB,...' –

相關問題