- ベストアンサー
エクセルで名前を削除するときに印刷範囲を削除しない方法について
下記のマクロでエクセル内の名前を一括でいつも削除しています。印刷範囲を設定していると、「Print_Area」という名前が設定されており、これも削除されてしまうので、印刷範囲の設定がなくなってしまいます。 印刷範囲を消さないようにするにはどうしたらいいでしょうか? --- Sub NameDel() Dim nm As Name For Each nm In ActiveWorkbook.Names nm.Delete Next End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えばこんなマクロでも Sub NameDel() Dim nm As Name For Each nm In ActiveWorkbook.Names If InStr(nm.Name, "Print_Area") = 0 Then nm.Delete End If Next End Sub でも過去の質問例を見ていると、エクセルが勝手に「定義」した「名前」が存在する場合があり、その「名前」をDeleteしようとするとエラーになるそうなので On Error Resume Next を入れておく方がよいかもしれません
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
逆転の発想で、一旦全ての名前定義を削除・抹消し 残すべき印刷範囲の名前定義の1行を加えてはどうですか。 残すべきものがすくない場合はコードがすっきりすると思う。 コードは既回答のもので間に合う。 Sub NameDel() Dim nm As Name For Each nm In ActiveWorkbook.Names nm.Delete Next '-- Set rng = Range("A1:G20") With ActiveWorkbook .Names.Add Name:="Print_area", RefersTo:="=Sheet1!" & rng.Address End With End Sub なお後半は1行にまとめられる。
- okormazd
- ベストアンサー率50% (1224/2412)
たとえば、印刷範囲設定がSheet1なら下記。 Sub NameDel() Dim nm As Name For Each nm In ActiveWorkbook.Names If nm.Name <> "Sheet1!Print_Area" Then nm.Delete End If Next End Sub
お礼
ありがとうございます。シート名の自動取得方法がわからなくて、行き詰ってしまっています。
お礼
ありがとうございました。うまくいきました。