我有一个包含少量项目的数组,每个项目代表一个名称范围。我正在尝试编写一个代码来删除仅存在于该数组中的命名范围。例: [ARR1] = {水果,蔬菜,朋友,类}
我想通过Arr1中存在的元素名称删除所有名称范围。 Arr1在不同的时间点可以有不同的元素。
谢谢!
答案 0 :(得分: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
答案 1 :(得分: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