Передача объектов в процедуры в VBA - PullRequest
0 голосов
/ 11 мая 2011

Я работаю над простым инструментом, который позволит мне анализировать несколько CSV-файлов и выкладывать их на свежий лист, «слитый» вместе. Вот моя реализация (я упростила ее) и моя проблема:

Класс А

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», «недопустимая процедура или аргумент» и «Объект не поддерживает это свойство или метод» *) 1020 *

Я понятия не имею, что делать дальше, я даже пробовал "вещь" в скобках, которая предположительно вводит параметр в ByVal или ByRef, я не помню, это было вчера.

Спасибо.

1 Ответ

0 голосов
/ 11 мая 2011

Эта строка:

tempC.A = A 

означает «присвоение A свойству tempC объекта значения свойства по умолчанию для объекта A
Ваш A объекточевидно, у него нет свойства по умолчанию.

Возможно, вы действительно имели в виду:

Set tempC.A = A 

Но даже тогда вы не можете получить доступ к закрытому полю A из Cкласс от D класс.Сделайте поле общедоступным или создайте открытый метод SetA() в классе C и вызовите его из D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...