PCメモ

Excelを中心とした業務改善の記録

VBA100本ノック4本目:セルの消去

excel-ubara.com

出題内容

画像のように1行目に見出し、A列に№が入っています。
この表範囲の一部には計算式が入っています。
(画像の最下行とD列には数式が入っています。)
データ行数は毎回変化します。
見出し行とA列№と計算式は残し、定数値だけを消去してください。

f:id:abv72:20210520215236p:plain

自分の回答

Dim LastRow As Long
LastRow = Cells(Rows.Count,1).End(xlUP).Row -1
Range("B2:" & "C" & LastRow).ClearContents

ClearContentsでB2:C11を消去している。

解説

消去するのは計算式ではなく、定数値。
SpecialCells(xlCellTypeConstants)を使うことで、選択範囲中の定数値のみを対象にすることができる。

Dim rng As Range
Set rng = Range("A1").CurrentRegion.Offset(1, 1)
On Error Resume Next
rng.SpecialCells(xlCellTypeConstants).ClearContents

①Range("A1").CurrentRegionで選択範囲はA1:D12

②Offset(1,1)で№列と見出し行を範囲から外し、範囲はB2:D12となる。

③SpecialCells(xlCellTypeConstants)を使い、B2:D12内の定数値のみを消去することができる。