繁体   English   中英

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

[英]How to access a named range in Excel-VBA with multiple areas?

所有工作都适用于单区域范围:选择单元格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):按住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'

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

没有使用 sheet.Range("bar")的解决方法,因为我不知道哪个工作表保存了名称?

你可以尝试全局Range ,而不是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 

这里的一个问题是, RefersToRange因以下定义的多区域命名范围而失败:

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

但它适用于:

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

所不同的是, VS +

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM