使用vba删除特定名称范围

问题描述 投票:-2回答:2

我有一个包含少量项目的数组,每个项目代表一个名称范围。我正在尝试编写一个代码来删除仅存在于该数组中的命名范围。示例:[Arr1] = {水果,蔬菜,朋友,类}

我想通过Arr1中存在的元素名称删除所有名称范围。 Arr1可以在不同的时间点具有不同的元素。

谢谢 !

excel-vba vba excel
2个回答
0
投票
Sub DeleteNamedRanges()
    Dim all_names, n
    all_names = Array("Fruits", "Vegetables", "friends", "Classes")
    For Each n In all_names
        Names(n).Delete
    Next
End Sub

0
投票

代码应区分要删除的名称的范围。它还应考虑到名称不存在的可能性。最后,由于您的数组旨在具有不同的内容,因此无法在执行过程中指定它。因此,我的代码下面有一个调用过程来指定数组和范围,以及一个执行过程,当找不到名称时它不会崩溃。

Sub CallDeleteNamedRanges()

    Dim Scope As Object
    Dim Arr() As String

    Set Scope = ThisWorkbook
'    ' you can specify a workbook, a worksheet, a table etc.
'    ' For example:-
'    Set Scope = ThisWorkbook.Worksheets("Sheet1")
    Arr = Split("Fruits,Vegetables,Friends,Classes", ",")
    DeleteNamedRanges Arr, Scope
End Sub

Private Sub DeleteNamedRanges(Arr() As String, _
                              Scope As Object)

    Dim i As Integer

    For i = 0 To UBound(Arr)
        ' an error will occur if the name doesn't exist
        On Error Resume Next
        Scope.Names(Arr(i)).Delete
    Next i
    Err.Clear
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.