当前位置: 首页 > 知识库问答 >
问题:

VBA Class()对象作为另一个类的属性

计阳泽
2023-03-14

我试图创建一个类来保存数量可变的项(它们本身就是另一个类对象)。

我有第二课:

' Class 2 contain each individual quote elements (OTC and MRC)

Private pOTC As String
Private pMRC As String
Public Property Get OTC() As String
    OTC = pOTC
End Property
Public Property Let OTC(Value As String)
    pOTC = Value
End Property

Public Property Get MRC() As String
    MRC = pMRC
End Property
Public Property Let MRC(Value As String)
    pMRC = Value
End Property

然后类1包含类2的数组:

Private pCurr As String
Private pQuote(20) As Class2

Public Property Get Curr() As String
    Curr = pCurr
End Property
Public Property Let Curr(Value As String)
    pCurr = Value
End Property

Public Property Set Quote(Index As Integer, cQuote As Class2)
    Set pQuote(Index) = cQuote
End Property

Public Property Get Quote(Index As Integer) As Class2
    Quote = pQuote(Index)
End Property

我想做的是:

Dim myQuotes As Class1
Set myQuotes = New Class1

myQuotes.Curr = "GBP"
myQuotes.Quote(3).OTC = "1200"  

第一行设置myQuotes。Curr是没有问题的,但是当我试图在数组中设置一个值时,下一行错误与运行时91对象变量或块变量未设置

有没有关于我做错了什么以及如何设置类数组中元素的值的指针?

提前谢谢!

共有3个答案

阴永逸
2023-03-14

也许应该是这样

Public Property Let Quote(Index As Integer, cQuote As Class2)
    Set pQuote(Index) = cQuote
End Property
柳景胜
2023-03-14

您需要将它们设置为Class1中的新Class2:

For intI = LBOUND(pQuote) to UBOUND(pQuote)
    Set pQuote(intI) =  New Class2
Next IntI

就像你在最终脚本中对第一类所做的那样。

胡越
2023-03-14

当你myQuotes时。Quote(3)您调用属性获取Quote,它有一个问题。

您的内部Class2数组没有实例化,因此pQuote(Index)引用的数组元素,然后您将myQuote. Quote(3). OTC=尝试将其分配给失败。

您需要确保实例化了pQuote(Index);您可以按需执行此操作:

Public Property Get Quote(Index As Integer) As Class2
   If (pQuote(Index) Is Nothing) Then Set pQuote(Index) = New Class2
   Set Quote = pQuote(Index)
End Property

(注意所需的设置

或者通过将初始化例程添加到Class1

Private Sub Class_Initialize()
    Dim Index As Long
    For Index = 0 To UBound(pQuote)
         Set pQuote(Index) = New Class2
    Next
End Sub

 类似资料:
  • 这是我的代码: 我想将的值设置为,我该怎么做?我试过,

  • 因此,我的基本内容是:、和。(我有一些其他类来建立Arduino连接) 这是我在中的start方法: 编辑:以下是我的操作。java: 我什么都试过了,但没有成功...如果有人能帮我,我会非常感激的。

  • 已更新-arr3中的id属性的顺序应与arr1中的id属性的顺序相同

  • 问题内容: 我有两节课。和。 我有一个要在中使用的功能。我当时正在考虑将的引用传递给的构造函数,然后再调用该函数。 那行得通吗?有人可以给我举个例子吗? 提前致谢! 问题答案: 是的,它将起作用。这是一种不错的方法。您只需传递A类的 实例 : 然后您可以拥有:

  • 我正在努力找出导致这个问题的原因。我对Java和BlueJ完全陌生,但我已经研究了几个小时,无法找出问题的原因。不断收到错误消息“不兼容类型:泥水匠无法转换为学徒”。非常感谢您的帮助。 //程序的目的:创建一个混合阵列,以容纳两个不同的学徒对象——泥水匠和木匠//泥水匠和木匠//然后将每个对象的所有细节显示在屏幕上。 学徒班就是这样的

  • 假设我们有一个这样定义的对象A: 出于某种原因,我需要创建第二个对象B,它只具有对象A的前两个属性: 所以我的问题是:将对象A复制到对象B的最佳方法是什么?我一直在逐个复制获取者和设置者的属性,但有些事情告诉我一定有更好的方法来做到这一点!特别是当对象将具有很多属性时,我必须编写一行又一行的代码,只是为了将它们全部复制到第二个对象B... 多谢了:) 编辑:我一直被一个“另一个问题的可能重复”提醒