3

作成したクラスを別のクラスのプロパティとして使用できません。1 つは Vertex と呼ばれ、もう 1 つは Edge と呼ばれます。Edge の 2 つのプロパティである Parent と Child は Vertex オブジェクトです。ここに私がそれらを使用しようとする方法があります。

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': オブジェクト変数または With ブロック変数が設定されていません」

デバッガーは、行で中断していることを示します

eEdge.Parent = vParent

問題は eEdge.Parent が初期化されていないことに関係していると思いますが、使用してみました

Set eEdge.Parent = New Vertex

同じ問題が発生しました。

それが役立つ場合は、クラス コードも投稿できますが、これらはかなり単純で、Property Get および Property Let 関数のみを含んでいます。

これを投稿するときに何か間違ったことをしたことをお詫びします。SOに何かを投稿するのはこれが初めてです。

ありがとう、エリック

4

1 に答える 1

2

私はこれを正しく理解していないかもしれませんが、試してみましたか:

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

それらがオブジェクトの場合は、「セット」を使用する必要があります

...また、これで解決しない場合は、頂点クラスのコードを投稿できますか?コンストラクターで、親オブジェクトと子オブジェクトを別々に暗くする必要がある場合があります...

于 2012-10-17T21:00:31.087 に答える