2011-05-11 4 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' 내부에 있으므로 일부 코드가 도움이됩니다. 나는 당신이'Public Sub AddA (ByVal A를 ClassA로)'를 원할 것입니다. – GSerg

+0

@GSerg 하위 모듈을 호출하는 주 모듈에서 오류가 발생하고 'ByVal A ClassA'를 사용하여 시도했지만 "잘못된 프로 시저 또는 인수"오류가 발생합니다. AddA에 대한 코드를 추가하고 수업을 완전히 빠져 나가는 동시에 깨달았습니다. 모든 코드를 완전히 업데이트했습니다. 미안합니다. – Timbermar

+0

'도구 -> 옵션 -> 일반 -> 오류 트래핑 '을 사용하여 오류를 볼 위치를 변경하십시오. 이 경우에는 "클래스 모듈에서 중단"을 원할 수 있습니다. – GSerg

답변

0

이 줄 : ". tempC 객체입니다 A 개체의 기본 속성 값의 A 속성에 assing"

tempC.A = A 

수단
A 개체에 기본적으로 기본 속성이 없습니다. 당신이 실제로 무엇을 의미

아마이었다

Set tempC.A = A 

그러나 그렇다하더라도, 당신은 D 클래스에서 private 필드 C 클래스의 A에 액세스 할 수 없습니다. 필드를 공개로 설정하거나 메소드를 C 클래스에 만들고 D에서 호출합니다.

+0

이것은 실제로 내 문제를 해결하지 못했지만, 실제로는 다른 곳에서 코드에있는 것이 었습니다. 그러나 올바른 경로를 찾아 보았습니다. 오류에 대해 알지 못했습니다. 트랩 설정 (톤을 도왔습니다), 그래서 이것을 답으로 표시 할 것입니다. – Timbermar

관련 문제