0

我在将 Spill 数组传递给 VBA 时遇到问题。该范围由名称“ListCurJobs”和等式定义

=UNIQUE(FILTER(CtrlSht!$B:$B,CtrlSht!$B:$B<>""))

使用“=ListCurJobs”测试工作表上的命名范围会按预期返回溢出的范围。

我正在尝试使用

Sub ListJobs
Dim listCurJobs() As Variant

n = Worksheets("CtrlSht").Range("listCurJobs").Rows.Count

ReDim listCurJobs(n, 1)

listCurJobs = Worksheets("CtrlSht").Range("listCurJobs")

End Sub

这适用于标准数组,但使用溢出数组我得到错误:Application-defined or object-defined error

编辑:跟进 - 我设法通过更改命名范围 listCurJobs 以使用 Offset 函数来解决这个问题

=OFFSET(CtrlSht!$E$1,0,0,CtrlSht!$D$1)

其中 CtrlSht!$D$1 通过计算 E 中的所有项目

=COUNTA(E1#)

并且 E1 具有我试图在命名范围内使用的溢出功能,即

=UNIQUE(FILTER(CtrlSht!$B:$B,CtrlSht!$B:$B<>""))

无论导致原始错误的原因是什么,这些额外的步骤似乎都可以避免它。

4

1 回答 1

1

我设法通过更改命名范围listCurJobs以使用Offset函数来解决此问题:

=OFFSET(CtrlSht!$E$1,0,0,CtrlSht!$D$1)

通过以下CtrlSht!$D$1方式计算所有项目的位置E

=COUNTA(E1#)

并且E1具有spill我试图在命名范围内使用的功能;IE,

=UNIQUE(FILTER(CtrlSht!$B:$B,CtrlSht!$B:$B<>""))

无论导致原始错误的原因是什么,这些额外的步骤似乎都可以避免它。

于 2022-02-21T17:36:48.297 回答