【发布时间】:2021-02-23 08:12:49
【问题描述】:
我需要以定义的名称存储一个锯齿状数组,以便可以保存它并在重新打开工作簿时引用其内容。下面的代码以正确的尺寸漂亮地创建了锯齿状数组,但 Names.Add 方法会产生“运行时错误 '1004':应用程序定义的或对象定义的错误”。
在调试相关行时将鼠标悬停在“名称”一词上会出现“对象变量或未设置块变量”的线索。我尝试更改变量名称,使用“Set”语句将 Fee3 数组转换为对象,以及我能想到的任何其他内容。请帮忙。
Sub GetFee3Codes()
Dim r1 As Integer, r2 As Integer, r3 As Integer, r4 As Integer, r5 As Integer, c5 As Integer
Dim Fee3, UserType, ClientType, StartDate, PayerType, RateOrAmt
ReDim Fee3(1), UserType(1), ClientType(3), StartDate(3), PayerType(14), RateOrAmt(14, 3)
For r1 = 1 To 1
Fee3(r1) = UserType
For r2 = 1 To 1
Fee3(r1)(r2) = ClientType
For r3 = 1 To 3
Fee3(r1)(r2)(r3) = StartDate
For r4 = 1 To 3
Fee3(r1)(r2)(r3)(r4) = PayerType
For c5 = 1 To 3
For r5 = 1 To 14
Fee3(r1)(r2)(r3)(r4)(r5) = RateOrAmt
Next r5
Next c5
Next r4
Next r3
Next r2
Next r1
Names.Add Name:="Fee3", RefersTo:=Fee3, Visible:=True
ThisWorkbook.Save
End Sub
【问题讨论】:
-
@FaneDuru 定义的名称不必须引用一个范围。可以放公式、常量(包括1/2D数组常量)
-
定义的名称本质上必须是可以存储为公式的东西,我想不出任何方法可以在公式中表示这样的锯齿状数组。
-
@FaneDuru 例如,您可以定义引用
=1、="some text"或={1,2,3}的名称。 -
这不是问题的根源,但像
Fee3这样的名称不是合法名称。您不能有一个可以解释为单元格地址的名称。 -
也许您可以使用
Workbooks_Open事件创建锯齿状数组,并将其存储在全局变量中。然后开发你的用户界面来访问它而不是Name
标签: excel vba jagged-arrays