【VBA】データがあるセルまで処理を繰り返す

VBA

これ凄く苦労したんですよね。

マクロの記録だとだめで。

イメージとして、

まず繰り返す処理はfor文を使います。

 

 

——————————-

Sub test()
Dim i As Long
For i = 1 To 3
   
>ここにやりたい処理を書く

Next
End Sub

—————————————

これは3回繰り返す処理で

例えば

Sub ボタン1_Click()

Dim i As Long

For i = 1 To 3

ActiveCell.Offset(1, 0).Select

Next

End Sub

————————————-

とすると

3回オフセット下に移動するので

こうなる

ただ、何回繰り返すか不透明な場合のほうが実務には多いと思う。

なので、

Dim 変数 As Long

変数=Cells(Rows.count,1).end(xlup).row

for i = 1 to 変数

を加える。

これによって

セル(最終行,1列)をコントロールUPした時の行数が

変数になる。

わかりにくいな。

例えば下のDの値が変数になる。4だ。

こうなったら5になる。

こうなったら8になる

cells(rows.count,1)からコントロール上キーという意味なので

このA8にたどり着く。

ごちゃごちゃしてきたな。

わかりやすいものを作ろう

Sub Macro1()

‘ Macro1 Macro

Dim 変数 As Long

変数 = Cells(Rows.Count, 1).End(xlUp).Row


For i = 1 To 変数


ActiveCell.Select
Selection.Copy

ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste

ActiveCell.Offset(1, -1).Select

Next


End Sub

アクティブなセルをコピーして

右のセルに張り付ける。

そのあと左下にセルを移動させる。

これが1回の動作。

これを繰り返す。

スタートがこれで

結果がこれになる。

例題でこれ作ってみたけども

普通にコピペでよかったな。

まぁオフセットとコピーは抜きにして

最終行まで繰り返す処理は便利なので

備忘録として残します。

あとまぁ、一冊くらいは専門書があったほうがいいかもしれません。

コメント