2011-05-11 30 views
0

我正在研究一个简单的工具,该工具将允许我解析多个CSV文件并将它们吐出到新的工作表“合并”在一起。下面是我的实现(我已经简化它),我的问题:将对象传递给VBA中的过程

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 

我试图把它当作ByValByRef各给了我不同的错误(“ByRef参数类型不匹配”,“无效的程序或参数”和“对象不支持此属性或方法“

我不知道接下来要尝试什么,我甚至尝试了括号”东西“,据推测强制参数为ByVal或ByRef,我不记得,那是昨天。

谢谢。

+0

错误在'AddA'里面,所以有些代码会有帮助。我也打赌你想'公共小组AddA(ByVal A作为ClassA)'。 – GSerg 2011-05-11 14:25:57

+0

@GSerg我在调用子模块的主模块中收到错误,并且我尝试使用'ByVal A作为ClassA',我得到了“无效的过程或参数”错误。请注意,我添加了AddA的代码,并在同一时间完全忽略了一堂课。我已经完全更新了所有的代码。对于那个很抱歉。 – Timbermar 2011-05-11 15:21:28

+0

使用'工具 - >选项 - >常规 - >错误陷印来改变你看到错误的地方。在这种情况下,您可能需要“在课程模块中断”。 – GSerg 2011-05-11 15:28:48

回答

0

这条线:

tempC.A = A 

手段 “assing到tempC对象A对象的默认属性的值的A属性”。
您的A对象显然没有默认属性。

你真正的意思可能是:

Set tempC.A = A 

但即便如此,你不能从D类访问私有字段CA。公开该字段或在C课程上创建公开的SetA()方法,并从D中调用该方法。

+0

这实际上并没有解决我的问题,它实际上是我的代码中的其他位置,但是你让我看着正确的路径,并且我不知道错误陷阱设置(这有助于一吨),所以我打算将其标记为答案。 – Timbermar 2011-05-12 13:06:13

相关问题