【Excel VBA】データがあるところ迄自動で削除
Excelで表を使って集計作業等していて、
データがある箇所迄自動で内容を削除出来たら楽ですよね?
具体的には↑の画面のように、表中のデータを一切取り消す
そんな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 ] の部分で、
表の何行目迄データが入力されているかを把握します。
これはキーボード上での入力であれば【Ctrl + [矢印キー]】になります。
「Row」は縦方向ですが、もしも、右方向に最終列を把握させるのであれば、
コードは
[ EndLine1 = mySht1.Range(“B3”).End(xlToRight).Column ] となります。
これで各最終行・列を把握できるので
あとは、それをCellsに入れ込むだけです。
コード自体は難しいものではないので説明は以上になります。
削除にも種類がある
上記のコードは文字列・数式だけを削除するモノで、
背景色や文字色を変更している場合は、それはリセットされません。
例えば【背景色】をリセットする場合には、
15行目の
[mySht1.Range(Cells(3, 3), Cells(EndLine1, 6)).ClearContents]の部分の
★[ ClearContents ] → [ Interior.ColorIndex = 0 ] に変更します。
この他、
★[ ClearContents ] → [ Clear ] でセルを初期状態に戻してくれます。
以上になります。
意外と簡単なので、やってみてください。