こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
突然ですが、「A1セルからA10000セルまで、1から10000の連番を振ってください」と言われたら、どうしますか?
手入力やオートフィルでやるのも一つの手ですが、もしこれが「1つ飛ばし」だったり、「特定の条件で止めたい」となったら、一気に面倒くさくなりますよね。
今日は、そんな「単純な繰り返し作業」という悩みを解決する、VBAの王道For…Next文をご紹介します。
これを覚えれば、手作業で30分かかっていた仕事が、クリック一つ、1秒で終わるようになります。
1. 基本:指定した回数だけ繰り返す
まずは基本形です。これは「変数 i が1から10になるまで繰り返す」という命令です。
▼ コピペ用コード
Sub Numbering()
Dim i As Long
' 1から10まで繰り返す
For i = 1 To 10000
Cells(i, 1).Value = i ' A列のi行目に数字を入れる
Next i
End Sub
この3行だけで、A1からA1000まで自動で数字が入ります。一瞬で10,000行完了です。楽ちんですよね。
2. Step:とびとびに処理する(1行飛ばしなど)
次は「1つ飛ばしで処理したい」という時です。例えば、一行おきにデータを入れたい時などに使います。Stepを使います。
▼ コピペ用コード
Sub NumberingStep()
Dim i As Long
' 1から10000まで、2つ刻みで繰り返す(1, 3, 5, 7, 9)
For i = 1 To 10000 Step 2
Cells(i, 1).Value = "奇数行です"
Next i
End Sub
これで、奇数行だけを狙い撃ちできます。
3. Exit For:途中でやめる
最後は「特定の条件でループを抜け出す」方法です。
「探しているデータが見つかったら、もう探さなくていい」という時に使います。無駄な処理を省くやり方です。
▼ コピペ用コード
Sub StopLoop()
Dim i As Long
For i = 1 To 10000
If i = 50 Then
MsgBox "5になったので終わります!"
Exit For ' ここでループを強制終了
End If
Cells(i, 1).Value = i
Next i
End Sub
まとめ
いかがでしたか?
For…Nextは、私たちの代わりに途方もない単純作業を一瞬でってくれます。
これと条件に応じて処理してくれるIF文を組み合わせると、さらに複雑なことを自動化できます。
PC作業はPCに任せて、私たちはもっと人間にしかできない、あるいはゆったりする時間に充てていきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。


コメント