我在Excel中有一个命名范围,我试图使用VBA清除 .
该范围的问题是横跨多个工作表,我不知道如何正确引用VBA中的命名范围,因为它涵盖了多个工作表 .
命名范围“计数”设置为工作簿范围,具有以下单元格引用:
=Sheet1!$A$1, Sheet2!$A$1, Sheet3!$A$1
清除命名区域时,它只在一个工作表上引用了单元格,我使用以下内容:
ThisWorkbook.Sheets("Sheet1").Range("Counts").ClearContents
我尝试过以下但似乎都没有效果 .
ThisWorkbook.Range("Counts").ClearContents
和
Range("Counts").ClearContents
最后一个给我一个全局错误 .
3 回答
您需要在每个工作表中使用工作表作用域范围,而不是跨越多个工作表的范围(这不起作用,如我们已 Build 的那样) .
定义范围名称时,可以将其范围设置为工作簿或当前工作表 . 这样,您可以在许多工作表中使用相同的范围名称 .
使用VBA遍历所有工作表,访问当前工作表上的ws.Range(“TheRangeName”)并清除其内容 .
这是一种更清洁的方法 .
我会写一些显示名称的东西,你可以用它来删除它......
在即时窗口中:
然后,您可以使用名称或索引删除所需的特定名称 .
希望有所帮助 .
Rory Archibald是Microsoft MVP
在他的website post about named ranges他说: A Range object can only refer to cells on one worksheet. You cannot refer to cells on different sheets with one Range object.
所以我无法完成我想要的东西,但我应该能够创建多个命名范围,并且一次只清除它们 .
我能够完成以下代码,灵感来自teylyn