我在使用創建的類作爲另一個類中的一個屬性時遇到問題。我有兩個類,一個叫Vertex,另一個叫Edge。 Edge,Parent和Child的兩個屬性是Vertex對象。這裏是我嘗試使用它們的方法。使用一個類作爲另一個類的屬性的VBA
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
當我運行它,我得到的錯誤,
「運行時錯誤‘91’:對象變量或帶塊變量未設置」
調試表明,它是打破在該行
eEdge.Parent = vParent
我認爲,這個問題已與eEdge.Parent做到不被初始化,但我嘗試使用
Set eEdge.Parent = New Vertex
和我有同樣的問題。
如果有幫助,我也可以發佈類代碼,儘管它們非常簡單,只包含Property Get和Property Let函數。
我很抱歉,如果我做了任何錯誤發佈時,這是我第一次在SO上發佈任何內容。
感謝, 埃裏克
com piler建議eEdge爲空。 – mcalex
我懷疑可能是這種情況,但我無法弄清楚如何正確初始化它。我是否需要在Edge類的Property Let函數中包含某種初始化,超出了我爲簡單屬性(如Int)所包含的內容? – Eric
設置屬性是對象類型時,您確實需要使用Set。您應該發佈您的'Edge'類的'Parent'屬性的代碼。 –