- ベストアンサー
エクセル データ消去についてのマクロ
セル内のデータをクリアする以下のマクロを設定しました。 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 今後、シート及び選択セルが増える予定ですが、 各々のシートのクリアする選択セルは同一です。 もっと簡単な方法はないのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そのブックの全てのシートについて、セル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)ボタンをクリック
その他の回答 (2)
- osamuy
- ベストアンサー率42% (1231/2878)
ブックの全シートをForループで巡回するとか。 消去対象にしたくない場合は、シート名の末尾に「!」をつけておいて、If文でスキップさせるとか。
お礼
回答ありがとうございました。
- at121
- ベストアンサー率41% (85/206)
dim set などで シートオブジェクトを変数にして for ・・ next で繰り返し・・ 下は withで・・シートオブジェクトを・・ for シート番号=1 to 3 with Sheets(シート番号) .Range("B5:AF9").Clear .Range("B11:AF15").Clear end with next
お礼
回答ありがとうございました。
お礼
ありがとうございました。 マクロ初心者の私に、すごくわかりやすい解説でした。 補足にと記入されたマクロについても、 便利なので使用したいと思います。 懇切丁寧な解説ありがとうございました。