class - VBA 使用一个类作为另一个类的属性

标签 class vba excel

我在使用作为另一个类的属性创建的类时遇到问题。我有两个类,一个称为“顶点”,另一个称为“边缘”。 Edge 的两个属性(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 block 变量”

调试器表明它在该行处中断

eEdge.Parent = vParent

我认为问题与 eEdge.Parent 未初始化有关,但我尝试使用

Set eEdge.Parent = New Vertex

我也遇到了同样的问题。

如果有帮助,我也可以发布类代码,尽管它们相当简单,仅包含 Property Get 和 Property Let 函数。

如果我在发布此内容时做错了什么,我深表歉意;这是我第一次在 SO 上发布任何内容。

谢谢, 埃里克

最佳答案

我可能没有理解这一点,但你尝试过吗:

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

如果它们是对象,则需要使用“Set”

...另外,如果这不能解决问题,您可以发布 Vertex 类的代码吗 - 您可能需要在其构造函数中以不同的方式调暗 Parent 和 Child 对象...

关于class - VBA 使用一个类作为另一个类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12940053/

相关文章:

c++ - 类中未初始化字段的值

ms-access - 将替代 OpenArgs 传递给使用 'New' 创建的 Access 表单

vba - 在已经打开的 excel 上使用 VBS 运行宏

json - curl URL 并在 Excel 单元格中发布结果?

excel - 在 Excel 中查找最近的坐标集

C++ std::vector 带有指向模板类的指针

javascript - 在 javascript 类中调用类方法

python - 如何判断另一个类中的函数何时被调用

vba - 如何将 Windows 资源管理器窗口设置为事件窗口

vba - 计算行数时出现“对象不支持属性或方法”错误