エクセルVBAを組み上げる中で、シートのクリアーについて悩むことがあります。
クリアしたいものが上手く消せないことがあります。
今回はメソッド別にこのクリア方法を最速理解します。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルVBAでシートを再利用するために、一度内容すべてをクリアしたい時があります。
普通は、Clearメソッドを使ってクリア操作を行いますが・・・
- シートの知識
- シートの存在を確認する2種類のコードと実務での例題
- シートクリアーを目的のメソッド別にVBA最速理解
- シートのコピーを最速に理解!VBAコードで異なる結果
- Excelシートを追加・挿入するAddメソッドの使い方
- シートの選択・指定方法とその意味。簡単でも軽視してはダメ
- エクセルシートの名付け・変更と取得そして一覧化するコード
- ワークシートのブック内移動と新規ブックへの移転を分かりやすく
- エクセルシートの並び順が思い通り!シート名一覧で自由自在
- Excelシートを保護する。 記述方法とプロテクトされない操作
- エクセルシートを削除する。Deleteの使い方と注意ポイント
- エクセルシートの非表示コードをパスワード管理するVBA
- ワークシートを変数化する3つの手法 オブジェクト変数など
コンテンツ
シートのクリアーを目的のメソッド別に最速理解
![vbaclearp010](https://shimaydo.com/wp-content/uploads/2020/12/vbaclearp010.jpg)
シートに記述された内容をクリアするということは、
その書かれている場所は各セルですので、
シート上のすべてのセルに対してクリアメソッドを実行するということになります。
Clearメソッドを実行すると、「値と数式」、「書式」、「コメント」全てがクリアされます。
ただ、全てをクリアするものだけでなく、
「値と数式」だけ、「書式」だけ、「コメント」だけクリアするというメソッドもあります。
これはセルに関わるものについての物ですが、
一方、シートに関わるものをクリアしたいという時があります。
「挿入した画像」や「プリント時の設定」をクリアしたり解除したりするときです。
例示としてこの表に対してクリアーを実行した時を検証します。合計欄はSUM関数で値を表示しています。
セルについて、「値」「罫線」「太字」「中央表示」「カラー設定」「コメント」「行の高さ変更」「列の幅変更」
シートについて、「画像の挿入」「プリントタイトル」
![vbaclear001a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear001a.jpg)
説明はこのような順番で行っていきます。
- 「値と数式」「書式」「コメント」全てクリアするClearメソッド
- 「値と数式」をクリアするClearContentsメソッド
- 「書式」をクリアするClearFormatsメソッド
- 「コメント」をクリアするClearCommentsメソッド
- 「挿入された画像」をクリアするDeleteメソッド
- 「プリントタイトル」をクリアする方法
- 「印刷エリア」など印刷時のシート設定のクリア
- 今までのものすべてを実行するとこうなる
- 最後にセルの高さと幅をデフォルトに戻す方法
「値と数式」「書式」「コメント」全てクリアするClearメソッド
Sheet1上のすべてのセルを選択し、Clearメソッドを実行します。
Option Explicit
Sub クリアA()
With Worksheets("Sheet1")
.Cells.Clear
End With
End Sub
実行結果はこのようになります。全てのデータが消去されました。
が、画像やページ設定はそのまま残っています。
![vbaclear002a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear002a.jpg)
「値と数式」をクリアするClearContentsメソッド
Sheet1上のすべてのセルを選択し、ClearContentsメソッドを実行します。
Sub クリアB()
With Worksheets("Sheet1")
.Cells.ClearContents
End With
End Sub
実行結果はこのようになります。
値と数式だけは消去されました。
が、画像やページ設定はそのまま残っています。
![vbaclear003a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear003a.jpg)
「書式」をクリアするClearFormatsメソッド
Sheet1上のすべてのセルを選択し、ClearFormatsメソッドを実行します。
Sub クリアC()
With Worksheets("Sheet1")
.Cells.ClearFormats
End With
End Sub
実行結果はこのようになります。
罫線、セルのカラー、文字の太字・中央表示が消去されました。
が、画像やページ設定はそのまま残っています。
![vbaclear004a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear004a.jpg)
「コメント」をクリアするClearCommentsメソッド
Sheet1上のすべてのセルを選択し、ClearCommentsメソッドを実行します。
Sub クリアD()
With Worksheets("Sheet1")
.Cells.ClearComments
End With
End Sub
実行結果はこのようになります。
コメントは消去されました。
画像やページ設定はそのまま残っています。
![vbaclear005a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear005a.jpg)
「挿入された画像」をクリアするDeleteメソッド
シート上にある画像全てを示すDrawingObjectsをクリアします。
また、このメソッドによって、シート上のすべてのコントロールも削除することができます。
Sub クリアE()
With Worksheets("Sheet1")
.DrawingObjects.Delete
End With
End Sub
実行結果はこのようになります。
画像は消去されました。
![vbaclear006b](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear006b.jpg)
「プリントタイトル」をクリアする方法
プリントタイトルをクリアするには、PageSetupオブジェクトのプロパティで設定操作します。
Sub クリアF()
With Worksheets("Sheet1")
.PageSetup.PrintTitleRows = False
End With
End Sub
実行結果はこうなります。
56行目に表示されていたプリントタイトルがクリアされました。(1行目の表示はクリアされません。)
![vbaclear007a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear007a.jpg)
![vbaclear007b](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear007b.jpg)
「印刷エリア」など印刷時のシート設定のクリア
印刷範囲の解除は「.PrintArea = False」とします。
ヘッダーとフッターは「””」空白を設定することでクリアします。
Sub クリアG()
With Worksheets("Sheet1")
.PageSetup.PrintArea = False
.PageSetup.RightHeader = ""
.PageSetup.CenterFooter = ""
End With
End Sub
今までのものすべてを実行するとこうなる
ClearメソッドとDeleteメソッド、PageSetupプロパティを実行します。
Sub クリアH()
With Worksheets("Sheet1")
.Cells.Clear
.DrawingObjects.Delete
.PageSetup.PrintTitleRows = False
.PageSetup.PrintArea = False
.PageSetup.RightHeader = ""
.PageSetup.CenterFooter = ""
End With
End Sub
実行結果はこのようになります。
これでシート上のデータが全てクリアされました。
![vbaclear008a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear008a.jpg)
けれどもよく見るとセルの大きさが変更されたままになっています。
シートを再利用するためには、この部分も元に戻しておきたいですね。
最後にセルの高さと幅をデフォルトに戻す方法
行の高さとか列の幅については見逃しがちな部分です。
シートの再利用時には、シートの見栄えが変わってしまう事が良くあります。
Sub クリアI()
With Worksheets("Sheet1")
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
実行結果はこのようになります。
![vbaclear009a](https://shimaydo.com/wp-content/uploads/2020/12/vbaclear009a.jpg)
これで全くの初期状態になりました。
シートのクリアーを目的のメソッド別に最速理解のまとめ
![vbaclearp011](https://shimaydo.com/wp-content/uploads/2020/12/vbaclearp011.jpg)
シートのクリアを目的とそのコード別に説明してきましたが、
あくまでもClearメソッドは、セルに対して行われるものであることを理解しておきましょう。
シートの設定の解除はClearでは無理ということを理解しておきましょう。
実行コードの記述については、一度に簡潔に記述することが出来ますので、パターン化しておくのも1つの方法だと思います。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
![vbastudyeyecatch2](https://shimaydo.com/wp-content/uploads/2022/01/vbastudyeyecatch2-160x120.jpg)
今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。