【发布时间】:2011-05-11 23:25:44
【问题描述】:
我正在开发一个简单的工具,它可以让我解析多个 CSV 文件并将它们吐出到“合并”在一起的新工作表上。这是我的实现(我已经简化了)和我的问题:
A类
private variables as types
property methods for accessing variables
B类
private variables as types
property methods for accessing variables
C类
Private cA as ClassA
Private cB as Collection 'Collection of ClassB
D 类 - 我的问题的一部分
Private cC as Collection 'Collection of ClassC
'Other member variables and their property get/lets
Public Sub AddA(A as ClassA)
If cC.Item(A.foo) is Nothing then
dim tempC as ClassC
set tempC = new ClassC
tempC.A = A
End if
End Sub
主模块 - 我的问题的另一半
Dim cC as New ClassC
'Initialize Class C, this all works fine
Dim tempA as ClassA
Set tempA = new ClassA
'Set tempA properties
cC.AddA tempA 'This is where my error is
我尝试将它作为ByVal 和ByRef 传递给我不同的错误(“byref 参数类型不匹配”、“无效的过程或参数”和“对象不支持此属性或方法”
我不知道接下来要尝试什么,我什至尝试了括号“东西”,据说它强制参数进入 ByVal 或 ByRef,我不记得了,那是昨天。
谢谢。
【问题讨论】:
-
错误在
AddA内部,所以一些代码会有所帮助。我也打赌你想要Public Sub AddA(ByVal A as ClassA)。 -
@GSerg 我在调用 sub 的主模块中收到错误,我尝试使用
ByVal A as ClassA,我收到“无效的过程或参数”错误。请注意,我添加了 AddA 的代码,同时实现了我完全遗漏了一个类。我已经完全更新了所有代码。对此感到抱歉。 -
使用
Tools -> Options -> General -> Error Trapping更改您看到错误的位置。在这种情况下,您可能需要“Break in class module”。 -
@GSerg 好的,现在我看到了错误实际发生的位置,它似乎是我执行检查的地方
If cC.Item(A.Foo) is Nothing then,根据文档,如果该项目不存在,它将只是错误而不是返回空值。让我解决这个问题,然后我们看看会发生什么