• ベストアンサー

エクセル データ消去についてのマクロ

セル内のデータをクリアする以下のマクロを設定しました。 Sub データ消去() Sheets("1").Range("B5:AF9").ClearContents Sheets("1").Range("B5:AF9").ClearConmments Sheets("1").Range("B11:AF15").ClearContents Sheets("1").Range("B11:AF15").ClearConmments Sheets("2").Range("B5:AF9").ClearContents Sheets("2").Range("B5:AF9").ClearConmments Sheets("2").Range("B11:AF15").ClearContents Sheets("2").Range("B11:AF15").ClearConmments Sheets("3").Range("B5:AF9").ClearContents Sheets("3").Range("B5:AF9").ClearConmments Sheets("3").Range("B11:AF15").ClearContents Sheets("3").Range("B11:AF15").ClearConmments End Sub 今後、シート及び選択セルが増える予定ですが、 各々のシートのクリアする選択セルは同一です。 もっと簡単な方法はないのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.1

そのブックの全てのシートについて、セルB5:AF9とB11:AF15のセル内容とコメントを消去するマクロです。 今後どれだけシートを追加してもそのままでOKです。 'ここから------------------------------------ Sub CLRSHT()   For Each sh In Worksheets     sh.Range("B5:AF9").ClearContents     sh.Range("B5:AF9").ClearComments     sh.Range("B11:AF15").ClearContents     sh.Range("B11:AF15").ClearComments   Next sh End Sub 'ここまで------------------------------------ 後、例えば「Sheet1」という名前のシートだけ消去したくない場合は、以下のようにします。 'ここから------------------------------------ Sub CLRSHT()   For Each sh In Worksheets     If sh.Name <> "Sheet1" Then 'ここに処理を除外したいシート名を記載       sh.Range("B5:AF9").ClearContents       sh.Range("B5:AF9").ClearComments       sh.Range("B11:AF15").ClearContents       sh.Range("B11:AF15").ClearComments     End If   Next sh End Sub 'ここまで------------------------------------ 消去したくないシートが複数あった場合は以下のようになります。 If sh.Name <> "Sheet1" And sh.Name <> "Sheet2" さて、マクロの貼り付け方、実行の仕方が分からない場合は以下をご覧ください。 上の貼り付け方が分からない場合は、以下ご覧下さい。 1) ツール(T)-マクロ(M)-新しいマクロの記録(R)を開く 2) 「マクロの記録」ウィンドウが表示されたら、何も変更せずにOKをクリック 3) 画面上に二つのボタンが表示されたツールバーが現れたら、左側の「■」をクリックして記録終了 4) Altキーを押しながらF8キーを押して、マクロウィンドウを開く 5) マクロウィンドウから、編集(E)ボタンをクリック 6) 現れた「Microsoft Visual Basic」の右側に Sub Macro1() ' ' ' End Sub と書いてある部分を削除して、上の「ここから」から「ここまで」を貼り付ける。 7) もう一度Altキー+F8キーでマクロウィンドウを開き、実行(R)ボタンをクリック

noname#81542
質問者

お礼

ありがとうございました。 マクロ初心者の私に、すごくわかりやすい解説でした。 補足にと記入されたマクロについても、 便利なので使用したいと思います。 懇切丁寧な解説ありがとうございました。

その他の回答 (2)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

ブックの全シートをForループで巡回するとか。 消去対象にしたくない場合は、シート名の末尾に「!」をつけておいて、If文でスキップさせるとか。

noname#81542
質問者

お礼

回答ありがとうございました。

  • at121
  • ベストアンサー率41% (85/206)
回答No.2

dim set などで シートオブジェクトを変数にして for ・・ next  で繰り返し・・   下は withで・・シートオブジェクトを・・ for シート番号=1 to 3  with Sheets(シート番号)   .Range("B5:AF9").Clear   .Range("B11:AF15").Clear  end with next

noname#81542
質問者

お礼

回答ありがとうございました。

関連するQ&A