【Excel VBA】データがあるところ迄自動で削除

2021年11月23日

Excelで表を使って集計作業等していて、
データがある箇所迄自動で内容を削除出来たら楽ですよね?

Excel_VBA_範囲指定削除_2

具体的には↑の画面のように、表中のデータを一切取り消す

そんな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

これはキーボード上での入力であれば【Ctrl + [矢印キー]】になります。
「Row」は縦方向ですが、もしも、右方向に最終列を把握させるのであれば、
コードは

[ EndLine1 = mySht1.Range(“B3”).End(xlToRight).Column ] となります。

これで各最終行・列を把握できるので
あとは、それをCellsに入れ込むだけです。

コード自体は難しいものではないので説明は以上になります。
 

広告

削除にも種類がある

Excel_VBA_範囲指定削除_3
[ ClearContents ] では背景色は削除されません。

上記のコードは文字列・数式だけを削除するモノで、
背景色や文字色を変更している場合は、それはリセットされません。

例えば【背景色】をリセットする場合には、

15行目の
[mySht1.Range(Cells(3, 3), Cells(EndLine1, 6)).ClearContents]の部分の
 ★[ ClearContents ] → [ Interior.ColorIndex = 0 ]  に変更します。

Excel_VBA_範囲指定削除_5
[ ClearContents ] → [ Interior.ColorIndex = 0 ] に変更したときの、Before(左) After(右)。

この他、
 ★[ ClearContents ] → [ Clear ] でセルを初期状態に戻してくれます。
 

Excel_VBA_範囲指定削除_4
[ ClearContents ] → [ Clear ] に変更したときの、Before(左) After(右)。 罫線も消えます。文字通り初期化です。

 
以上になります。
意外と簡単なので、やってみてください。

広告