将对象传递给VBA中的过程

时间:2011-05-11 14:08:49

标签: excel-vba vba excel

我正在研究一个简单的工具,它允许我解析多个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,我不记得了,那是昨天。

感谢。

1 个答案:

答案 0 :(得分:0)

这一行:

tempC.A = A 

表示“向A tempC属性A对象提供A对象的默认属性的值。”
您的Set tempC.A = A 对象显然没有默认属性。

你的意思可能是:

A

但即便如此,您也无法从C课程访问D班级的私人字段SetA()。将该字段设为公开字段或在C类上创建公开D方法,并从{{1}}调用该方法。