複数のセルを範囲選択する-Excel VBA Tips

初心者のためのExcel VBA

Excel VBAでセルを範囲選択するには

例えばExcel VBAで以下の画像のような範囲を選択するには、Range(“A1:B3”).Selectとします。

VBAでセルを範囲選択する

サンプルコード

A1セルからB3セルまで斜めに選択することで、セルを範囲選択しています。実行結果は上述の画像と同じです。

上記のサンプルコードは以下のように書き換えても同じ意味です。Rangeオブジェクトの中にRangeオブジェクトを入れることができます。

実行結果ももちろん同様で、以下の画像のようになります。A1セルからB3セルまでを範囲選択する結果になります。

offsetプロパティによるセルの選択範囲の移動-1

尚、Range()の中にCells(行番号, 列番号)を入れることもできます。

Cellsプロパティによるセルの指定は、Cells(行番号, 列番号)という文法です。そのため、
B3セルは、3行目の2列目なので、Cells(3, 2)で表すことができますね。

複数のセルを範囲選択し、その範囲のデータだけをクリアするには

選択範囲の値だけをクリアすにはSelectionプロパティClearContentsメソッドを用います。具体的には以下のようにします。

実行前の画面

セルの範囲の値

サンプルコード

SelectionプロパティRange(“A1:B3”)を表しています。つまり、一般的に言えば、Selectionプロパティセルの選択されている範囲を表すプロパティです。

実行後の画面

セルの範囲の値だけをクリア

セルに入力されていた値だけが削除されていますね。セルを削除したのではなく、セルの中身の値だけを削除している点に注意して下さい。セルそのものを削除するには後述するDeleteメソッドを利用します。

尚、直観的には以下のように書きたくなることもあるかもしれませんが、こういう書き方はエラーになってしまいます。

間違ったサンプルコード

そのため、Selectionプロパティが必要なのです。

但し以下のようにSelectメソッドを用いずに、セルのデータをクリアすることは可能です。

複数のセルを範囲選択し、セルを削除するには

範囲選択された複数のセルを削除すにはSelectionプロパティDeleteメソッドを用います。

Deleteメソッドには引数「Shift」があります。尚「引数(ひきすう)」の意味がよくわからないという場合は「Excel VBAにおける引数(ひきすう)とは何か」を参照して下さい。

Shift引数はセルを削除した際に上方向にシフトさせるか、左方向にシフトさせるかを指定する引数です。上記のサンプルコード「deleteRangeSample1()」ではあえてShift引数を指定しませんでした。Shift引数を指定しない場合は、Excelが最適なシフト方向を自動判別してセルの削除を処理してくれます。

下記にShift引数が取る値の一覧を示します。

Shift引数の値 意味
xlShiftToLeft 左方向にシフト
xlShiftUp 上方向にシフト

例えば範囲選択されたセルを削除し上方向にシフトさせたい場合は以下のように記述します。

VBA実行前の画面例は以下の通りです。

セルを削除する前の画面

サンプルコード実行後の画面例は以下のようになります。

セルを削除し上方向にシフトした画面

サンプルコード「deleteRangeSample2()」では、上方向にシフトさせてセルの選択範囲を削除しているので、「A4」・「B5」という値を含むセルが一番上にきていますね。

オブジェクトについて

Excel VBAにおけるオブジェクトとはExcelを構成する各「部品」のようなものです。セルの1つ1つももちろん部品です。セルを範囲選択した場合もセルの集合体という「部品」です。単一のセルも複数のセルもRangeオブジェクトという種類のオブジェクトです。

Cells(行番号, 列番号)で指定したセルもRangeオブジェクトです。

関連項目

 

使える!Excel VBA Tips集TOPに戻る

 

[AD]自分のペースでゆったり学ぶ Excel VBA

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA