2/04/2023

Excel。VBA。クロス集計のデータ部分だけを削除したいけど、どうしたいい【Delete】

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)するという、プログラム文です。