Stepの概要
Forループの増減値を設定する VBAの予約語 | ||
Step 概要 Step は、VBA の わかりやすく説明 Step は、「ループのカウンタをいくつずつ増やす(または減らす)か決めるよ!」という命令です。 |
||
|
Step の基本的な使い方
Step を使って、ループの増分を 2 に設定する基本的な例です。
Sub ExampleStep()
Dim i As Integer
' 1 から 10 まで 2 ずつ増加
For i = 1 To 10 Step 2
Debug.Print i ' 1, 3, 5, 7, 9 を出力
Next i
End Sub
解説:
Step 2
を指定すると、ループのカウンタが 1 → 3 → 5 → 7 → 9 と 2 ずつ増加。- デフォルトの増加値(
Step 1
)とは異なり、より柔軟なループが可能。
Step を使って逆方向のループを作成
Step を負の値にすると、ループを逆方向(カウントダウン)で実行できます。
Sub ExampleStepNegative()
Dim i As Integer
' 10 から 1 まで 1 ずつ減少
For i = 10 To 1 Step -1
Debug.Print i ' 10, 9, 8, ... 2, 1 を出力
Next i
End Sub
解説:
Step -1
を指定すると、ループが 10 → 9 → 8 → … → 1 のように減少。- 通常の
For ... Next
は増加するが、Step を負にすることで逆順の処理が可能。
Step を使った Excel のセル操作
Step を使って、2 行ごとにセルの値を変更する例です。
Sub ExampleStepExcel()
Dim i As Integer
' A1 から A10 まで、2 行ごとに "Step の例" を入力
For i = 1 To 10 Step 2
Cells(i, 1).Value = "Step の例"
Next i
End Sub
解説:
- Step 2 を使い、1 行おき(A1, A3, A5, …)にデータを入力。
- 全てのセルにデータを入れるのではなく、一定間隔で処理を行う際に便利。
エラーを回避する方法
Step を使用する際に、終了値を適切に設定しないと、ループが一度も実行されない場合があります。
Sub SafeStepExample()
Dim i As Integer
' 間違ったループ(実行されない)
For i = 1 To 10 Step -1
Debug.Print i ' 実行されない
Next i
' 正しいループ(減少する場合は Step を負にする)
For i = 10 To 1 Step -1
Debug.Print i ' 10, 9, 8, ... 1 を出力
Next i
End Sub
解説:
- 終了値より開始値が小さい場合、Step を負にしないとループが実行されない。
- 逆に、開始値が大きいのに Step を正にすると、ループが実行されない。
Step の注意事項
- Step の値を適切に設定する: Step の符号(正負)が合っていないと、ループが実行されない。
- 負の Step を使う場合は開始値 > 終了値: 逆にすると、ループがスキップされる。
- Step を 0 にするとエラー: 0 にすると無限ループやエラーの原因になる。
よくある質問
- Q: Step のデフォルト値はいくつですか?
- A:
Step 1
がデフォルトです。明示しなくても 1 ずつ増加します。 - Q: Step を負の値にするとなぜ逆方向にループしますか?
- A: ループカウンタが Step の値だけ減少するため、
Step -1
なら 1 ずつ減っていきます。 - Q: Step 0 にするとどうなりますか?
- A: 無限ループまたはエラーになります。VBA はゼロステップのループを許可しません。
- Q: Step を 0.5 など小数にすることはできますか?
- A: はい。
For i = 1 To 5 Step 0.5
のように小数を使うことも可能です。
まとめ
- Step は
For ... Next
ループの増減値を指定するために使用される。 - デフォルトでは
1
ずつ増加するが、Step を指定することで任意の増分に変更できる。 - 負の Step を指定すると、ループが逆方向に実行される。
- Step を適切に設定しないと、ループが実行されなかったり、無限ループになる可能性がある。
- Excel のセル操作にも応用でき、一定間隔でのデータ処理が可能。