【Excel VBA】データがあるところ迄自動で削除
Excelで表を使って集計作業等していて、
データがある箇所迄自動で内容を削除出来たら楽ですよね?
![Excel_VBA_範囲指定削除_2](https://haginote.com/wp-content/uploads/2021/11/74011062a87cf453ed76336f2c3ce2d8.jpg)
具体的には↑の画面のように、表中のデータを一切取り消す
そんなVBAコードを今回ご紹介いたします。
例として冒頭の画像のように、【B2】から始まる表があり、
そのデータは【C3】からスタートするモノとした場合です。
ここに記入されたデータを削除するには、
以下のEndプロパティを応用したソースコードが使えます。
Option Explicit
Sub ClearContents()
Dim A As String
Dim EndLine1 As Long
Dim mySht1 As Worksheet
A = "Sheet1"
Set mySht1 = ThisWorkbook.Worksheets(A)
If mySht1.Range("C3") <> "" Then
mySht1.Activate
EndLine1 = mySht1.Range("C2").End(xlDown).Row
mySht1.Range(Cells(3, 3), Cells(EndLine1, 6)).ClearContents
End If
End Sub
14行目の
[ EndLine1 = mySht1.Range(“C2”).End(xlDown).Row ] の部分で、
表の何行目迄データが入力されているかを把握します。
![Excel_VBA_範囲指定削除_1](https://haginote.com/wp-content/uploads/2021/11/69c60a8bceb6559cad48493bd96e28b1-1024x444.jpg)
これはキーボード上での入力であれば【Ctrl + [矢印キー]】になります。
「Row」は縦方向ですが、もしも、右方向に最終列を把握させるのであれば、
コードは
[ EndLine1 = mySht1.Range(“B3”).End(xlToRight).Column ] となります。
これで各最終行・列を把握できるので
あとは、それをCellsに入れ込むだけです。
コード自体は難しいものではないので説明は以上になります。
削除にも種類がある
![Excel_VBA_範囲指定削除_3](https://haginote.com/wp-content/uploads/2021/11/ae3cadd3edca3d07b776ef3077a271b6-1024x445.jpg)
上記のコードは文字列・数式だけを削除するモノで、
背景色や文字色を変更している場合は、それはリセットされません。
例えば【背景色】をリセットする場合には、
15行目の
[mySht1.Range(Cells(3, 3), Cells(EndLine1, 6)).ClearContents]の部分の
★[ ClearContents ] → [ Interior.ColorIndex = 0 ] に変更します。
![Excel_VBA_範囲指定削除_5](https://haginote.com/wp-content/uploads/2021/11/f97d02a6d539d97acc2a305159fc7d60-1024x450.jpg)
この他、
★[ ClearContents ] → [ Clear ] でセルを初期状態に戻してくれます。
![Excel_VBA_範囲指定削除_4](https://haginote.com/wp-content/uploads/2021/11/bc48f0d74f095036af77f33f65468daa-1024x445.jpg)
以上になります。
意外と簡単なので、やってみてください。