[英]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.