2012-10-17 6 views
3

다른 클래스의 속성으로 만든 클래스를 사용하는 데 문제가 있습니다. 저는 두 클래스를 가지고 있는데, 하나는 Vertex이고 다른 하나는 Edge입니다. Edge, Parent 및 Child의 두 속성은 Vertex 개체입니다. 여기 내가 그들을 사용하려고하는 방법입니다.다른 클래스의 속성으로 클래스를 사용하는 VBA

디버거는 파괴되어 있음을 나타냅니다 : "개체 변수 또는 With 블록 변수가 설정되지 않은 런타임 오류 '91'"나는이 프로그램을 실행할 때

Option Explicit 

Public Sub OrgChart() 

Dim Vertices As Collection 
Dim Edges As Collection 
Dim vParent As Vertex 
Dim vChild As Vertex 
Dim eEdge As Edge 
Dim rEdgeRow As Range 

Set rEdgeRow = ActiveSheet.Range("A1:C1") 

Do While Len(rEdgeRow(1, 1).Value) > 0 

Set vChild = New Vertex 
Set vParent = New Vertex 
Set eEdge = New Edge 

vChild.Name = rEdgeRow(1, 1).Value 
vChild.Dummy = False 

vParent.Name = rEdgeRow(2, 1).Value 
vParent.Dummy = False 

eEdge.Parent = vParent 
eEdge.Child = vChild 
eEdge.Percent = rEdgeRow(3, 1).Value 

Set rEdgeRow = rEdgeRow.Offset(1, 0) 

Loop 

End Sub 

, 나는 오류가

얻을 라인

eEdge.Parent = vParent 

에서 나는 문제가 eEdge.Parent로 초기화되지 상관이 있다고 가정합니다,하지만 난

를 사용하여 시도
Set eEdge.Parent = New Vertex 

그리고 같은 문제가 있습니다.

도움이된다면 클래스 코드도 게시 할 수 있습니다. 비록 매우 간단하지만 Property Get 및 Property Let 기능 만 포함하고 있습니다.

게시 할 때 잘못했다면 사과드립니다. 이것은 처음으로 아무 것도 게시하지 않습니다.

감사합니다, 에릭

+0

com piler는 eEdge가 null임을 제안합니다. – mcalex

+0

그럴 수도 있다고 생각하지만 올바르게 초기화하는 방법을 알 수 없습니다. Int와 같은 간단한 속성에 포함시킬 것 이상의 Edge 클래스에 대한 Property Let 기능에 초기화를 포함해야합니까? – Eric

+1

개체 유형 인 속성을 설정할 때 Set을 사용해야합니다. 'Edge' 클래스의'Parent' 속성에 대한 코드를 게시해야합니다. –

답변

1

나는이 권리를 이해되지 않을 수 있습니다,하지만 당신은 시도 않았다 그들이 개체를 경우

Set eEdge.Parent = vParent 
Set eEdge.Child = vChild 

, 당신은

"설정"을 사용할 필요가 ... 또한이 문제를 해결하지 못하면 Vertex 클래스의 코드를 게시 할 수 있습니까? 생성자에서 부모 개체와 차용 개체를 다르게 희미하게해야 할 수도 있습니다 ...

+0

다른 답변에 대한 답변으로 내 의견을 볼 수 있습니다. 본질적으로, 네, 이것이 문제입니다. – Eric

관련 문제