更大宏的一部分涉及检测和删除命名范围,这些命名范围在将工作表移动/复制到主工作簿时无意中重复。这些“损坏的”命名范围由名称管理器中显示“#REF!”的“值”列指示。
我尝试使用以下宏删除这些命名范围:
Sub DeleteBrokenNamedRanges()
Dim NR As Name
Dim numberDeleted As Variant
numberDeleted = 0
For Each NR In ActiveWorkbook.Names
If InStr(NR.Value, "#REF!") > 0 Then
NR.Delete
numberDeleted = numberDeleted + 1
End If
Next
MsgBox ("A total of " & numberDeleted & " broken Named Ranges deleted!")
End Sub
不幸的是,返回值为0并且没有删除命名范围。我使用了protect / unprotect和InStr
的一些参数,但没有任何效果。
旁注 - NR.Value
的回报不是#REF!或者类似的错误代码,但实际上是=C:\Blahblah\blarg.xls
路径。
非常感谢任何有关这方面的帮助,谢谢!
答案 0 :(得分:2)
我不认为错误代码作为范围值存在(而不是我对此的任何权限)。如果有效范围有错误而不是#REF!这可能是一个问题,但我认为像
IsError(NR.RefersToRange)
可能是检查命名范围是否破损的好方法吗?