Excel。VBA。クロス集計のデータ部分だけを削除したいけど、どうしたいい
<Excel VBA: OffsetとResize>
単純作業になればなるほど、面倒に感じます。
例えば、データ部分だけを範囲選択して、データを削除したい場合です。
B2:D5を範囲選択して、DELキーを押すだけの処理だからこそ、面倒になるわけですね。
そこで、Excel VBAでプログラム文を作ってみることにします。
Sub データ部分削除()
Dim データ範囲 As Range
Set データ範囲 = Range("a1").CurrentRegion
データ範囲.Offset(1, 1).Resize(データ範囲.Rows.Count - 2, データ範囲.Columns.Count - 2). Clear
End Sub
実行してみます。
これで、データ部分のみを削除することができます。
プログラム文を確認しておきましょう。
お馴染みの変数宣言ですね。
Dim データ範囲 As Range
Set データ範囲 = Range("a1").CurrentRegion
データ範囲という変数に、A1を起点とする連続したデータを範囲(CurrentRegion)とします。
見出し行も関係なく、表全体を範囲選択している状態です。
これで、Clearすると、全部消えてしまうので、OffsetとResizeをつかって、データ部分だけになるように調整します。
それが、次の行です。
データ範囲.Offset(1, 1).Resize(データ範囲.Rows.Count - 2, データ範囲.Columns.Count - 2). Clear
A1からはじまる「データ範囲」の表を、
1行1列ずらしたところ(Offset(1, 1))から、
全体の行数から-2した行数の全体の列数から-2した列数(Resize(データ範囲.Rows.Count - 2, データ範囲.Columns.Count - 2))を、
削除(Clear)するという、プログラム文です。