5

在一个区域范围内一切正常:选择单元格 A1 和 B1 并将其命名为“foo”。

?ThisWorkbook.Names.Item("foo").RefersTo
 =Tabelle1!$A$1:$B$1
?ThisWorkbook.Names.Item("foo").RefersToRange.Address
 $A$1:$B$1

但是,两个区域范围将失败(Excel 2010):单击单元格 A2 和 B2 并按下 ctrl并将其命名为“bar”。

 ?ThisWorkbook.Names.Item("bar").RefersTo
  =Tabelle1!$A$2,Tabelle1!$B$2
 ?ThisWorkbook.Names.Item("bar").RefersToRange.Address
  -> Run-time error '1004'

为什么我们不能得到“bar”-name 所指的范围?

是否有不使用 sheet.Range("bar")的解决方法,因为我不知道哪个表包含名称?

4

2 回答 2

1

您可以尝试 global Range,而不是 a sheet.Range

? Range(ThisWorkbook.Names("bar").RefersTo).Address

为了避免可能的跨工作簿陷阱,您可以使用ConvertFormula将工作簿名称添加到范围:

? ThisWorkbook.Names("bar").RefersTo
  =Sheet1!$A$2,Sheet1!$B$2

? Application.ConvertFormula(ThisWorkbook.Names("bar").RefersTo, xlA1, xlA1)
  =[Book1]Sheet1!$A$2,[Book1]Sheet1!$B$2

? Application.Range(Application.ConvertFormula(ThisWorkbook.Names("bar").RefersTo, xlA1, xlA1)).Address
  =$A$2,$B$2

于 2013-01-11T14:13:44.210 回答
0

这里的一个皱纹是RefersToRange对于由以下定义的多区域命名范围失败:

=Sheet1!$B$2 + Sheet1!$D$4

但它适用于:

=Sheet1!$B$2 , Sheet1!$D$4

区别在于,vs +

于 2018-06-01T21:08:54.677 回答