如何使用变量来定义名称来调用命名器范围

如何使用变量来定义名称来调用命名器范围

根据文档,任何引用的文本名称都可以由变量定义如果我定义

Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names("MyRange").RefersToRange

它按预期工作如果我使用

Dim S as string
S="MyRange"

Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names(S).RefersToRange

它也运作良好

但使用

Dim Arr() as string
Arr(1)="MyRange"
Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names(Arr(1)).RefersToRange

给出错误信息

并且

Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names(Cstr(Arr(1))).RefersToRange

给出错误信息

为什么数组元素会导致错误以及如何解决这个问题?

我确实需要使用数组吗?

答案1

声明数组的大小 -Dim Arr(1) as String

我不太清楚你的具体应用是什么,但是数组需要指定大小才能使用-

Sub test()
'One number indicates one dimension and starts at **0** See footnote
Dim Arr(1) As String
Arr(1) = "MyRange2"
Range("A2").Name = Arr(1)
End Sub

脚注

如果你还不知道,那么你需要redim它:

Sub test()

Dim Arr() As String
'Do stuff to get a number 
ReDim Arr(1)
Arr(1) = "MyRange3"
Range("A3").Name = Arr(1)

End Sub

在您的示例中,我将其分解,但它的工作原理如下:

Sub test()

Dim Arr() As String
ReDim Arr(1)
Arr(1) = "MyRange"
Range("A1").Name = Arr(1)

Set xlsdatasource = ThisWorkbook.Names("MyRange").RefersToRange
MsgBox (xlsdatasource.Address)

End Sub

$A$1在消息框中给我。

将“A1”替换为“A1:C1”,消息框会显示$A$1:$C$1


具有相同限制的更复杂示例

对于 A1:A6 阅读 -

this
is
a
one
dimensional
array

这也可以编译并运行:

Sub test()

Dim Arr() As String

Dim j As Integer
j = [counta(A1:A10)]
ReDim Arr(j - 1) 

Dim i As Integer
  For i = 0 To 5
  Arr(i) = Cells(i + 1, 1)
  Next

Dim rng As Range

  For i = 0 To 5
  Set rng = Range(Cells(i + 2, i + 5), Cells(i + 2, i + 8))
  rng.Name = Arr(i)
  Next

Set xlsdatasource = ThisWorkbook.Names(Arr(3)).RefersToRange
MsgBox (xlsdatasource.Address)

End Sub

并显示 msgbox $H$5:$K$5

改变这个:

Set xlsdatasource = ThisWorkbook.Names(Arr(3)).RefersToRange 
MsgBox (xlsdatasource.Address)

更改为:

Set xlsdatasource = ThisWorkbook.Names("one").RefersToRange
MsgBox (xlsdatasource.Address)

还返回显示的消息框$H$5:$K$5


一张纸条

如果单元格A41作 而不是one,则无法读取,Dim Arr() as String因为“1”不是以或者下划线

我可以使用_1Dim Arr() as Variant,但我实际上不能将范围命名为“1”,因为它是无效值命名

相关内容