【エクセルVBA】繰り返し処理(For /While /Do)

同じ処理を指定した回数だけor条件が成立する間、繰り返します。

1行目、2行目、100行目…に連番で数字を入力していくマクロを作るのに、
Cellsを100回書くのはとても面倒ですね。また、間違ってかいてしまうかもしれません。

反復処理は、一回分の処理と繰り返す回数を変えてやればよいです。同じ処理を何回も書く必要がなく便利です。

反復処理は、3種類あります。

For文

  • 開始から終了までの回数文の処理を繰り返します。
  • 処理が一回終わるごとに、カウンタに「加算」を加えます。
  • カウンタが「終了」を越えるとfor文 を終了
  • カウンタはマイナス値も可


エクセルの一列目に100まで連番をふります

カウンタ:i
開始:1
終了:100
加算:1

となり、カウンタが1~100(100回)になるまで処理を繰り返します。

Forを途中で抜ける exit For

Exit forを使えば、カウンタの値に関係なく途中でfor文を終了します。


1列目を下にチェックしていき、”stop!”があればforを抜けます。なければ、連番を振ります。

実行結果(実行前→実行後)

While文

指定する条件式が成立している間は処理を繰り返します。

  • 条件式が成立(True)する限り、処理を繰り返す。
  • 判別式については、こちらを参照


エクセルの一列目を下方向に色を塗っていく。セルに文字が入っていたら終了。

  • 条件式:(Cells(i, 1).Value = “”) エクセルが空である

実行結果(実行前→実行後)

While を途中で抜けることはできない

For文ではExit forで途中で抜けることができましたが、While~WendはExitを使うことはできません。

Do Loop 文

for,while文は処理実行前に条件式をチェックするのに対して、Do Loopは条件式を前後いずれかに選べます。

前条件

処理の前に条件式による判別を行う。「while 条件式」をDoの直後に書きます。

後条件

処理の後に条件式による判別を行う。「while 条件式」をLoopの直前に書きます。


エクセルの一列目を下方向にチェック。セルが空でない場合に終了。

前条件

後条件

実行結果(実行前→実行後)

Do Loopを途中で抜ける exit Do


エクセル1列目を下方向にチェックし、文字がある場合にforを抜けます。

  • 条件式:TRUE  常に条件が成立する

実行結果(実行前→実行後)

同じ処理を繰り返し行う(For /While /Do) まとめ

  • 同じ処理を繰り返すには、For/while/Doがある。
  • For、DoはExitにより処理を途中で抜けることができる。
  • WhileはExitを使うことができない。
  • Doは処理の前後のいずれかに条件を判別することができる。

コメント

タイトルとURLをコピーしました