gpt4 book ai didi

vba - 将集合添加为另一个集合中的项目 - 类 - Excel VBA

转载 作者:行者123 更新时间:2023-12-03 02:31:06 24 4
gpt4 key购买 nike

我目前正在尝试构建一个项目集合,其中一个集合可能包含另一个集合作为其中的项目。

我设置了两个集合并为每个集合创建了一个类模块:col1 -(链接到 Class1);和 col2 -(链接到 Class2)

以下是我的类(class)模块:

1级:

Option Explicit
Private pTestC1A As String
Private pTestC1B As Collection

Public Property Let TestC1A(Value As String)
pTestC1A = Value
End Property

Public Property Get TestC1A() As String
TestC1A = pTestC1A
End Property

Property Set TestC1B(col2 As Collection)
Set pTestC1B = col2
End Property

Property Get TestC1BElements(v As Integer) As String
TestC1B = pTestC1B(v)
End Property

2级:

Option Explicit
Private pTestC2A As String

Public Property Let TestC2A(Value As String)
pTestC2A = Value
End Property

Public Property Get TestC2A() As String
TestC2A = pTestC2A
End Property

下面是我的模块代码

Sub Test()

Set col1 = New Collection
Set col2 = New Collection

Set cV = New Class1
cV.TestC1A = "First Collection"

Set aV = New Class2
aV.TestC2A = "Second Collection"
sKey1 = CStr(aV.TestC2A)
col2.Add aV, sKey1

Set cV.TestC1B = col2

sKey2 = CStr(cV.TestC1A)
col1.Add cV, sKey2
If Err.Number = 457 Then
MsgBox "Error Occured"
ElseIf Err.Number <> 0 Then Stop
End If
Err.Clear

Msgbox col1(1).TestC1A ' works fine
Msgbox col2(1).TestC2A ' works file
MsgBox col1(1).TestC1B(1).TestC2A ' does not work - 450 run-time error

End Sub

根据上面的代码,如果我分别引用每个集合,我就能够成功获取项目的值,但是我得到了“参数数量错误或属性分配无效”> 如果我尝试以嵌套方式获取项目值,则会出现运行时错误。

如果有人能帮助指出我出错的地方,并且也许能阐明类模块处理集合的属性设置和获取参数的方式,我们将不胜感激。

最佳答案

您的 Class1 类模块中缺少 Get TestC1B 属性:

Property Get TestC1B() As Collection
Set TestC1B = pTestC1B
End Property

一旦存在,您将能够调用 col1(1).TestC1B(1) 并访问其 .TestC2A 属性

<小时/>

背景

通过在类中使用私有(private)变量并使用属性来授予对私有(private)变量的读/写访问权限,您做了正确的事情。通过这种方式,您将获得更多的控制权。

Property Get 提供对该属性(广义上讲,底层私有(private)变量)的读取访问权限。例如,您可以使用 Range.Address 返回(读取)范围对象的地址。

属性LetSet 授予对属性的写访问权限。对对象使用Set。例如,Range.Value = 1 会将新值写入该范围。

考虑一下,Range.Address = $A$1。由于范围地址没有Property Set,因此这不会更改范围地址。它将把 Range.Address 部分视为 Get 调用,并评估类似 $A$1 = $A$1 返回 TRUE在此示例中

关于vba - 将集合添加为另一个集合中的项目 - 类 - Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com