gpt4 book ai didi

arrays - Excel vba : Property let procedure not defined and property get procedure did not return an object

转载 作者:行者123 更新时间:2023-12-04 12:06:53 25 4
gpt4 key购买 nike

我有一个 Client类(class)。在那个类里面有一个数组 losses .首先,我创建并使用客户端填充 clientsColl大批。然后对于该数组中的每个客户端,我填充其 losses大批。

然后我尝试将 losses 的第一个元素打印到调试中为每个客户。但是,它不起作用,Property let procedure not defined and property get procedure did not return an object出现错误。

同时,如果我只是尝试显示 losses 的第一个元素对于第一个客户,没有任何循环,它工作正常:

Dim clientsColl() As Client
clientsColl = getClients(dataWorkbook)

Dim clientCopy As Variant

Debug.Print "first: " & clientsColl(1).getLosses(1) 'works fine
For Each clientCopy In clientsColl
Debug.Print "in for each: " & clientCopy.getLosses(1) 'error here
Next

Client类(class):
Public Property Get getLosses()
getLosses = losses
End Property

Private losses() As Double
losses数组已填充:
Public Sub calculateFinancialResult()
ReDim losses(1 To simulationCount)
ReDim profits(1 To simulationCount)

Dim i As Long
For i = 1 To simulationCount
If outcomes(i) = 1 Then
losses(i) = totalLoss
...
Else
...
End If
Next
End Sub

为什么会发生这种情况以及如何解决?

编辑:更多的主要子:
For Each clientCopy In clientsColl
clientCopy.setSimulationCount = globals("SIMULATION_COUNT")
...
clientCopy.calculateFinancialResult
...
Next

编辑:

同时简单的 for循环工作正常:
Debug.Print "first: " & clientsColl(1).getLosses(1)
For tempCount = LBound(clientsColl) To UBound(clientsColl)
Debug.Print "in for each: " & _
clientsColl(tempCount).getLosses(1)
Next

最佳答案

总结评论中所说的话:

当您尝试复合属性时,通常会出现您的问题(错误 451)。
为了表示这种情况,我们可以使用任何具有属性的对象的任何结构。

让我们用集合数组来模拟它:

Option Explicit

Sub Test()
Dim Arr As Variant
Dim Col As Collection
Dim i As Long
Dim j As Long

ReDim Arr(1 To 10)

For i = 1 To 10
Set Col = New Collection
For j = 1 To 10
Call Col.Add(j)
Next

Set Arr(i) = Col
Next

On Error Resume Next
Debug.Print Arr(1).Item(1)
Debug.Print Arr(1).Item()(1)
On Error GoTo 0
End Sub

您的问题源于您将属性视为属性的事实。在不那么复合(或者当您的数组被显式声明为类实例数组时)级别上,由于早期绑定(bind),它可以工作。但是当事情开始变得更加复杂时——它就失败了,因为你的属性(property)只是另一个功能。

因此,要实现您想要的,您应该使用另一对括号显式调用它。

关于arrays - Excel vba : Property let procedure not defined and property get procedure did not return an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47529484/

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