VBA 可以根据 RefersTo 值删除命名范围吗?

VBA 可以根据 RefersTo 值删除命名范围吗?

我正在清理一个臃肿的 Excel 工作簿,并尝试批量删除引用某人“C”盘上的工作簿的命名范围。它们有很多。而且它们没有在这个工作簿中使用。

'C:\blahblah\...\...\...\...\...\[工作簿名称.xls]Sheet1'!$E$28

下面的代码帮助我删除名称包含“图标”的命名范围(例如)。

但是,当范围包含如上所示的路径时,我确实需要删除该范围。请记住,工作簿或工作表名称也可能会更改,但驱动力保持不变。

Sub deleteNamedRangesSpecific()
For Each NR In ActiveWorkbook.Names
    If NR.NameLocal Like "*" & "icon" & "*" Then NR.delete
Next
End Sub

有什么想法如何根据范围本身而不是范围名称进行删除?

谢谢。

麦克风。

答案1

您只需将NR.RefersTo变体传递给字符串类型变量即可使用该Like函数。

此代码对我有用。显然需要进行修改$E$28以适应。

Option Explicit
Sub deleteNamedRangesSpecific()
    Dim NR As Name
    Dim compare_string As String
    For Each NR In ActiveWorkbook.Names
        compare_string = NR.RefersTo
        If compare_string Like "*" & "$E$28" & "*" Then NR.Delete
    Next
End Sub

相关内容