2017-12-27 6 views
-2

私はいくつかの項目を持つ配列を持ち、各項目は名前の範囲を表します。私はその配列内にのみ存在する名前付き範囲を削除するコードを記述しようとしています。例: [Arr1] = {果物、野菜、友人、クラス}vbaを使用して特定の名前の範囲を削除

すべての名前の範囲をArr1にある要素の名前で削除します。 Arr1は、異なる時点で異なる要素を持つことができます。

ありがとうございます!

+0

名前付き範囲全体を削除するか、名前を削除するだけですか? – AntiDrondert

+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 
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 
関連する問題