【发布时间】:2016-04-12 22:44:51
【问题描述】:
运行 VBA 代码使我能够检测到在工作表中应用过滤器会创建一个未出现在名称管理器中的范围名称(范围名称仅与标题或整个表相关联)。有没有办法知道为什么会发生这种情况和/或防止这种情况发生?这只是 Excel 故障吗?
导致我尝试运行的错误的 vba 代码部分如下:
For Each Rng In ActiveWorkbook.Names
Set Rng2 = Range(Rng)
If Not Intersect(Rng2, Range(rng1.Offset(1, 0), rng1.End(xlDown)).EntireRow) Is Nothing Then ActiveWorkbook.Names(Rng.Name).Delete
Next Rng
当我调试时,我注意到我的 Rng(顺便说一下,这是一个名称对象)指向一个我从未创建过的范围(我知道这一点是因为它所在的工作表没有其他范围名称,而我从来没有放任何东西) 我使用此 vba 代码来验证此表中是否存在该名称:
Sub test()
Dim Rng As Name
For Each Rng In Sheets("WindHail Zone 2").Names
'ActiveWorkbook.Names(Rng.Name).Delete
MsgBox Rng
Next Rng
End Sub
我从 for 循环的第一行到第二行删除了注释块以将其删除。我删除了该选项卡上的过滤器并将其重新添加,只是遇到了同样的问题。
谢谢!
【问题讨论】:
-
那...只是不会发生。我们有什么办法可以重现它?什么样的过滤器?什么VBA代码?需要更多信息。
-
请编辑您的帖子以包含更多详细信息:包括代码 sn-ps、到目前为止您尝试过的内容等。