arrays - 将数组复制到作为集合一部分的工作簿中会在 VBA 中产生运行时错误 451
问题描述
作为我正在编写的 Excel 的一些 VBA 的一部分,我想打印一个 12 x 101 元素数组 ( dwt_percentiles
),它是集合中项目的一部分到工作簿,以便我可以从数据中制作一些图表。在过去的 24 小时内,我才开始在 VBA 中使用类,并且遇到了以下问题:
我尝试打印数组的函数中的行引发以下错误:“运行时错误 451:未定义属性让过程和属性获取过程未返回对象”。当我将 colltasks 添加到监视窗口时,该dwt_percentiles
数组以预期值显示得很好,但我似乎无法从代码中访问它。我可以很好地访问集合项目的其他属性,所以我尝试访问数组的方式可能是一个错误,但我找不到与我在网上尝试的代码相似的代码(可能是因为我使用错误的术语...)。
我正在使用的代码如下:
功能plotECDF
Sub plotECDF(ByVal colltasks As Collection)
Dim item As Variant
Dim i As Integer, j As Integer, k As Integer
For i = 7 To 13
Sheet3.Range("A1").Value = i
Sheet3.Range("B1").Value = colltasks(i).Name
For j = 1 To 12
For k = 0 To 100
' error shown on next line - run time error 451
Sheet3.Cells(1 + j, 3 + k).Value = colltasks(i).dwt_percentiles(j, k)
Next k
Next j
Next
End Sub
类模块Task
- 任务构成集合的元素
Option Explicit
' Basic properties
Public Name As String
Public Hs As Double
Public Ws As Double
Public window As Double
' Array definitions
Public dwt_array As Variant
Public dwt_byMonth As Variant
Public dwt_percentiles As Variant
创建 dwt_percentiles() 数组并将其粘贴到集合中的代码
Sub do_things()
Dim percentileByMonth() As Variant
Dim percentileSum As Double
Dim percentileArray() As Variant
Dim numYears as Integer, j as Integer, jj as Integer, k as Integer
Dim t as New Task
Dim colltasks as New Collection
percentileSum = 0
ReDim percentilesByMonth(1 To 12, 0 To 100)
For j = 1 To 12
For jj = 0 To 100
For k = 1 To numYears + 1
percentileSum = percentileSum + percentileArray(j, k, jj)
Next k
percentilesByMonth(j, jj) = percentileSum / (numYears + 1)
percentileSum = 0
Next jj
Next j
t.dwt_percentiles = percentilesByMonth
End sub
非常感谢。
解决方案
推荐阅读
- java - android中attrs的不同用途是什么?
- c++ - std::thread 的 lambda 移动捕获
- python - 使用 python LCG 进行 chi-2 测试和 3d 光谱测试
- lucene - Lucene Facets - 如何处理 StoreId
- amazon-web-services - 如何从另一个帐户列出 Cognito 中的用户
- php - 过滤来自 html 值输入的查询数据
- python - mpi4py 和 ctypes - 带有 MPI 的 Python 程序在单个线程退出时退出(通过 C++)
- java - 构建 java maven clean install CreateProcess 时出现问题 error=206
- python - 有什么办法可以让这个输入在 VSCode 中着色?
- python - 附加到列表时值重复