我知道有很多关于此的线索和问题,通常,错误的地方非常明显。移动对象时,大多数人都没有使用SET关键字。我是。
以下是发生的事情:
这是在excel表中,所以我做了一些函数来跟踪列并创建一个索引,这样每次应用程序运行它都会重新索引列,这样我就可以做{{1如果列更改。
我有一个名为custContagions的表单。它只是一个小模态窗口,允许用户添加/删除/编辑客户的传染状态。它包含一个属性:
.Cells(row_num, pCust_index("custID"))
它还包含此属性设置器:
Private pCust_index as dictionary
挺直接的吧?采用字典对象,重置索引并指向现有的传递对象。
现在,在调用表格中,我有另一面:
Public Property Set set_cust_index(ByRef custIndex As Dictionary)
Set pCust_index = New Dictionary
Set pcust_index = custIndex
End Property
我在set_cust_index调用上遇到了无效使用属性编译器错误。
我错过了什么?
答案 0 :(得分:2)
大多数人在移动物体
时没有使用SET关键字
然后他们不会移动物体。 Set
关键字是移动对象的方式
还有CopyMemory
可以直接复制ObjPtr
,但我不相信大多数人会这样做。
非常直接吧?
不完全。您创建一个字典,立即丢弃它并替换为作为参数传递的另一个字典。您应该删除两行中的第一行,然后创建参数ByVal
:
Public Property Set set_cust_index(ByVal custIndex As Dictionary)
Set pcust_index = custIndex
End Property
我收到了无效使用属性编译器错误
您声明了一个属性,然后将其用作子。有了房产,你应该做到:
Set contForm.set_cust_index = pCust_index
此时set_cust_index
名称看起来不太好。它会为子(Public Sub set_cust_index(ByVal custIndex As Dictionary)
)创建一个合理的名称,但对于一个属性,您最好使用Public Property Set cust_index(ByVal custIndex As Dictionary)
。