【VBA】データがあるセルまで処理を繰り返す VBA Twitter Facebook はてブ Pocket LINE 2023.11.14 これ凄く苦労したんですよね。マクロの記録だとだめで。イメージとして、まず繰り返す処理はfor文を使います。 ——————————-Sub test()Dim i As LongFor i = 1 To 3 >ここにやりたい処理を書くNextEnd Sub—————————————これは3回繰り返す処理で例えばSub ボタン1_Click()Dim i As LongFor i = 1 To 3ActiveCell.Offset(1, 0).SelectNextEnd Sub————————————-とすると 3回オフセット下に移動するので こうなるただ、何回繰り返すか不透明な場合のほうが実務には多いと思う。なので、Dim 変数 As Long変数=Cells(Rows.count,1).end(xlup).rowfor 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).RowFor i = 1 To 変数ActiveCell.SelectSelection.CopyActiveCell.Offset(0, 1).SelectActiveSheet.PasteActiveCell.Offset(1, -1).SelectNextEnd Subアクティブなセルをコピーして右のセルに張り付ける。そのあと左下にセルを移動させる。これが1回の動作。これを繰り返す。スタートがこれで 結果がこれになる。 例題でこれ作ってみたけども普通にコピペでよかったな。まぁオフセットとコピーは抜きにして最終行まで繰り返す処理は便利なので備忘録として残します。あとまぁ、一冊くらいは専門書があったほうがいいかもしれません。
コメント