2012-06-11 143 views
2

我有一個讓屬性定義爲:用VBA ByRef參數不匹配在Excel

Public Property Let Set_ChanArray_Enabled1(i As Integer, j As Integer, choice As Boolean) 
    ChanArray(i, j).Enabled1 = choice 
End Property 

在同一個對象模塊中定義一個子,我試圖做到以下幾點:

For j = 4 To 44 
    Me.Set_ChanArray_Enabled1(j, 1) = True 
    Me.Set_ChanArray_Enabled1(j, 3) = True 
Next j 

但VBE給了我一個ByRef參數不匹配指向j傳入

Me.Set_ChanArray_Enabled1(j, 1) = True 

我已經定義了j和傳入的參數該方法作爲整數,所以我不知道什麼是錯的。

+0

您沒有傳入正確的參數。你寫了你的函數來接受3個參數(i,j,choice),你用(i,j)= choice來調用它。嘗試像這樣調用它'Me.Set_ChanArray_Enabled1(j,1,True)' – deusxmach1na

+1

我試過你之前建議的代碼,但它不起作用。如果我用一個普通的整數(例如3)代替j,代碼就可以工作。我認爲這個錯誤與傳入一個整型變量有關。 – Ehudz

+1

好的,我剛剛研究了一下,你可以按照你寫的方式來調用它。但是,你是否以正確的順序傳遞數組索引?你的讓屬性的順序是(i,j),當你調用它時,你正在傳遞(j,i)?你有沒有嘗試把你的ByVal函數參數? – deusxmach1na

回答

4

該錯誤表明j(即,它不是整數類型)的輸入有錯誤。

你是否在聲明中聲明瞭它; dim j, i as integer?如果是這樣,那麼只有i是一個整數(您需要重複as integer)。

(使用byval似乎「修復」了這一點,因爲它的pass-by-copy語義允許VBA在調用Set_ChanArray_Enabled1之前執行自動類型轉換爲整數)。

+0

是的,我做到了!謝謝! – Ehudz