• ベストアンサー

範囲名定義の削除マクロ

よろしくお願いします。 ブックに不定数の範囲名が設定されていて、ある複数の範囲名を除き、他はすべて削除するマクロを組もうと思い、以下の通りに組んでみました。 範囲名 A と Q 以外はすべて削除するつもりなのですが、 If 範囲名(i) <> "A" Or "Q" Then の行で「型が一致しません。」とエラーが出ます。 If 範囲名(i) <> "A" Then と Or を使わなければ、成功するのですが・・・。 Or はこの場合使えないということなんでしょうか? まったく違った組み方もあると思いますが、含めてご教授願います。 以下、自作マクロサンプル ----- Sub 不要範囲削除() Dim i As Integer Dim 範囲名(20) As String With ActiveWorkbook NC = .Names.Count For i = 1 To NC 範囲名(i) = .Names(i).Name Next For i = 1 To NC If 範囲名(i) <> "A" Or "Q" Then .Names(範囲名(i)).Delete End If Next End With End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.2

↓で試してみてください。 '-------------------------------------------- Sub test()   Dim MyTeigi As Name   For Each MyTeigi In ActiveWorkbook.Names     If MyTeigi.Name <> "A" And MyTeigi.Name <> "Q" Then       MyTeigi.Delete     End If   Next End Sub '--------------------------------------------

char_cat
質問者

お礼

このほうが、よりすっきりなりますね。どうも For Each分は苦手で・・・。これ使わさせていただきます。ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

(範囲名(i) <> "A") and (範囲名(i)<>"Q") としてみたらどうでしょう

char_cat
質問者

お礼

早々の回答ありがとうございます。 回答いただいて、ハッっと気づきました・・・。(^^;)そうですよね・・・。それぞれ条件式を AND なり OR なりでつながないといけないですよね。ありがとうございました。

関連するQ&A