如何访问 Excel-VBA 中具有多个区域的命名范围?

Wol*_*ehn 5 excel vba

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

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

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

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

为什么我们无法获取“bar”名称所指的范围?

由于我不知道哪张纸包含该名称,是否有不使用的 解决方法?sheet.Range("bar")

GSe*_*erg 1

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

? Range(ThisWorkbook.Names("bar").RefersTo).Address
Run Code Online (Sandbox Code Playgroud)

为了避免可能的跨工作簿问题,您可以使用将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
Run Code Online (Sandbox Code Playgroud)