【VBA】For〜Next分(繰り返し処理)を使い倒す!【2飛ばし・逆にカウント】
Excelマクロ(VBA)を使用してFor文を使っている人は必見です!
For文のStepを使用すると実現できるプログラミングの幅が増えることを知ってますか?
- カウンタを1つ飛ばしする方法
- 逆順でカウントを行う方法
For分を使った繰り返しはよく使用されるのでStepの使用方法を知ってた方が効率的にソースコードの作成が可能です。Stepのいろいろな使用方法をマスターして効率的なマクロの作成を行えるようになりましょう!
- For文の基本的な使用方法を理解している人
- For文のカウンタをX回飛ばしで使いたい人
- For文のカウンタを逆順で処理したい人
では、確認していきましょう
関連記事
For文のカウンタを一つ飛ばしする方法
カウントを一つ飛ばしで処理する方法を確認していきましょう。
イメージとしてはこのような感じです。
通常のカウンタ
1つ飛ばしの場合
通常通りの指定だとカウンタが1ずつ増えていくところ、1つ飛ばしで増えていっていることがわかります。このような指示を行うことができるようになります。
入力構文
入力構文を確認していきましょう
通常のFor文と違う箇所は1箇所だけです。
StepXX の部分だけ通常と違います。
XXに2を入力すると2ずつカウントされるという意味になります。
2以外の別の数字に置き換えるとその数字ぶんずつカウントされます。
プログラム例
プログラム例の確認をしていきましょう。
- 1から9までのカウントを行う
- 1つ飛ばしで数を数える
- 数えてる数を出力する
このような用件のプログラムを作成しました。
Sub forStep2()
' カウンタを宣言
Dim i
'For 文開始
For i = 1 To 9 Step 2
'現在のカウンタ値を出力
MsgBox " カウンタ =" & i
Next i
End Sub
For 1 To 9の部分で1から9までのカウントを行ってます
Step 2の部分で2つ飛ばしでカウントされることがわかります。
MsgBoxでカウントを出力してます。
Step2を追加することで1つ飛ばしのプログラムを作成することができました。
皆さんもソースコードを作成して実行してみてください。
For分のカウンタを逆順にする方法
次にカウンタを逆順にする方法を確認してみましょう
イメージとしては以下のような感じです。
逆順のカウント
10からカウントが減っていって1まで逆順でカウンタとされていくことがわかります。
入力構文を確認していきましょう。
入力構文
カウンタを逆順にする方法の入力構文を確認しましょう。
こちらも通常のFor文とほとんど一緒ですが
Step -XXという部分だけ違うことがわかります。
XXに1を入力すると-1ずつ逆順にカウントアップされます。
プログラム例
プログラム例の確認をしましょう
- 10から1までのカウントを行う
- 逆順で数を数える
- 数えてる数を出力する
Sub forStepUp()
' カウンタを宣言
Dim i
'For 文開始
For i = 10 To 1 Step -1
'現在のカウンタ値を出力
MsgBox " カウンタ =" & i
Next i
End Sub
Step -1の部分で逆順にカウントを指示してます。
皆さんもソースコードを作成して実行してみてください。逆順に実行されることがわかるかと思います。
For文でStepがない場合について
Stepの使い方を確認してきました。
ここで以下のようなプログラムを記載した時にどのような処理になるかを確認しましょう。
Stepがない場合の挙動についての理解を深めましょう
プログラムの結果を確認していきましょう!
プログラムの結果を確認
プログラムを実行してみました。
サンプルプログラムはこちらです。
Sub forSumple()
' カウンタを宣言
Dim i
'For 文開始
For i = 10 To 1
'現在のカウンタ値を出力
MsgBox " カウンタ =" & i
Next i
End Sub
プログラムの実行結果は
考察
サンプルプログラムを実行しても何も出力されませんでした。
この結果から考察してみます。
- Forの繰り返しが一度も行われてない
- iの値は10に変更されている
To1に合致していない繰り返し処理を行われていないようでした。
To1は置き換えると
になると想定します。
そしてStepXXに何も入力されてないと
になると辻褄があいます。
まとめ
いかがだったでしょうか。
- StepXXを指定するとXX飛ばしでカウントアップされる
- Step-XXを指定すると逆順でカウントアップされる
- StepXXを指定しないと自動でStep1が入力される
For文でStep付きの使用方法を確認しました。
Stepの使い方を習得すると繰り返し処理の幅が広がりますのでこの機会に習得しましょう。
関連記事
ディスカッション
コメント一覧
まだ、コメントがありません