2017-10-25 12 views
2

名前に基づいて複数のセルの内容を削除できるマクロを作成したいと思います。たとえば、私はsheet1name1とsheet2name2を持っているシートを持っていて、別のシートには私がsheet2name1とsheet2name2という名前を使用した場所があります。セルの名前が ""の場合、これらのセルの内容を削除するマクロを記述できますか?星は数字を指すべきです。名前に基づいてExcelセルの内容を消去する

Sub RemNamedRanges() 
    Dim nm    As Name 
    On Error Resume Next 
    For Each nm In ActiveWorkbook.Names 
     nm.Delete 
    Next 
    On Error Goto 0 
End Sub 

これはすべてを削除することですが、私が前に述べたようにいくつかの特定のものが必要です。

答えて

2

InStrは、文字列内に部分文字列があるかどうかを判断できる必要があります。

For Each nm In ActiveWorkbook.Names 
    if cbool(instr(1, nm.name, "name", vbtextcompare)) then _ 
     nm.Delete 
Next 
1

これは正しい方向を指すはずです。 Ifステートメントを必要なものと一致するように変更します(Sheet1を探しているかどうかわからないか、ブック内のシート名を確認してください)。ブックをループしていますか?

Sub RemNamedRanges() 
Dim nm  As Name 
On Error Resume Next 
For Each nm In ActiveWorkbook.Names 
    If nm.Name = ActiveSheet.Name Then 
     Range(nm).ClearContents 
    End If 
Next 
On Error GoTo 0 
End Sub 
+0

「Range(nm.name).ClearContents'」である必要がありますか? – Jeeped

+0

@Jeeped - それはそのままで動作しますが、 'Range(nm.Name)... 'と同様に動作します。 – BruceWayne

+0

ああ、キーを押します。名前オブジェクトを文字列に変換していないかもしれないと思っていました。 – Jeeped

関連する問題