このように、項目名とデータに分かれている表が存在している場合に
データの部分だけ選択するマクロの紹介です。
データの部分だけ消したいような場合に使えます。
マクロの記述は以下の通りです。
記述内容は7行のみですが、内容を理解すれば類似処理(最終行にデータを追加する、特定のデータの個数を数える、等)にも活かせます。
【記述内容】
Sub ボタン1_Click()
Worksheets("Sheet1").Range("A2").Select
Dim i As Integer
Do While IsEmpty(ActiveCell.Value) = False
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
Range("A2:B" & Format(i + 1)).Select
End Sub
【解説】
・データの部分の一番左上を選択
Worksheets("Sheet1").Range("A2").Select
・データの部分が何行あるのかをカウント
Dim i As Integer
Do While IsEmpty(ActiveCell.Value) = False
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
「Dim i As Integer」でInteger型(数値型)の変数iを宣言します。
Integer型は宣言した時点で0に初期化されるため、
明示的に初期値を入れる必要はありません。
その後の4行はループ処理です。
現在選択されているセルは「ActiveCell」、その値は「Value」で取れます。
「IsEmpty()」は引数のセルが空か否かを返す関数であり、
この関数の引数に「ActiveCell.Value」を与えることで、
現在選択されているセルが空ならTrue、空でなければFalseを返すようになります。
この関数の結果を用いて「Do While」~「Loop」文でループを回しています。
ループ内で「ActiveCell.Offset(1, 0).Activate」を記述することで、
「現在選択されているセル(ActiveCell)の1行下(Offset(1, 0))に
選択セルを移す(Select)」
ということができるようになり、
「A2が空でないか→A3が空でないか→A4が空でないか…」
というループを回すことが可能になります。
この際、変数iをカウントアップしていくことで、
何行存在するのかをカウント可能になります。
・データを範囲選択
Range("A2:B" & Format(i + 1)).Select
Range関数の引数の部分を変数iを用いて可変としています。
&演算子とFormat関数を用いることで、
このように文字列結合することができます。