私はいくつかの項目を持つ配列を持ち、各項目は名前の範囲を表します。私はその配列内にのみ存在する名前付き範囲を削除するコードを記述しようとしています。例: [Arr1] = {果物、野菜、友人、クラス}vbaを使用して特定の名前の範囲を削除
すべての名前の範囲をArr1にある要素の名前で削除します。 Arr1は、異なる時点で異なる要素を持つことができます。
ありがとうございます!
私はいくつかの項目を持つ配列を持ち、各項目は名前の範囲を表します。私はその配列内にのみ存在する名前付き範囲を削除するコードを記述しようとしています。例: [Arr1] = {果物、野菜、友人、クラス}vbaを使用して特定の名前の範囲を削除
すべての名前の範囲をArr1にある要素の名前で削除します。 Arr1は、異なる時点で異なる要素を持つことができます。
ありがとうございます!
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
コードでは、削除する名前の範囲を区別する必要があります。名前が存在しない可能性も考慮する必要があります。最後に、あなたの配列は異なる内容を持つことが意図されているので、実行中のプロシージャでは指定できません。したがって、以下の私のコードは、配列とスコープを指定する呼び出しプロシージャと、名前が見つからないときにクラッシュしない実行プロシージャを持っています。
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
名前付き範囲全体を削除するか、名前を削除するだけですか? – AntiDrondert
名前の範囲を完全に削除する –