【发布时间】:2012-06-11 19:44:19
【问题描述】:
我有一个 Let 属性定义为:
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 和传递给方法的参数都定义为整数,所以我不确定哪里出了问题。
【问题讨论】:
-
您没有传入正确的参数。您编写了函数来接受 3 个参数(i,j,choice),并且使用 (i, j) =choice 调用它。尝试这样称呼它
Me.Set_ChanArray_Enabled1(j, 1, True) -
我已经尝试过您之前建议的代码,但它不起作用。如果我将 j 替换为普通整数(例如 3),则代码有效。我认为这个错误与传入一个整数变量有关。
-
好的,我只是研究了一下,你可以按照你写的方式来称呼它。但是,您是否以正确的顺序传递数组索引?您的 Let 属性的顺序为 (i,j),当您调用它时,您正在传递 (j,i)?您是否尝试过将 ByVal 放入您的函数参数中?
-
hm...put byval 似乎让它起作用了!不知道为什么我不早点尝试。谢谢提醒!
标签: excel vba variables methods parameters