2012
7
02

ExcelVBA入門第8回 繰り返し処理

Excelにはセルやシートという概念があるので、変数で指定して処理するのに繰り返し処理は欠かせません。サンプルをコピペして動かしてみてください!


For~Next文

こちらのコードを動かしてみます。

ステップ実行しながら追ってみると、このような動きをしています。

RangeとCellは行列を逆に書くので、iが変化するごとにA1セル、A2セル、A3セル…のように変化していっていますね。

途中で処理を止めさせたいときはこのように書きます。iが5になったらForを抜けますよ、というIf文ですね。

こんなふうに入れ子にすることも。

120702-1

実行するとこんな感じに。入れ子にすると短いコードでたくさん処理できますねー。

追記

Stepについて書くのを忘れてました!

このように書くと、変数へ入る値が1, 3, 5, 7… のように2ずつ増えていくことになります。(この場合だと10をスルーして11のときにループを抜けます)

Step 1のときのみ、この記述を省略することができるので、Stepを書かない場合は1ずつ増えていくことになります。

マイナスも指定できます。このように書くと10, 9, 8, 7… のように処理されます。

For Each In~Next文

オブジェクトをループする構文です。私は「○○という名前のシートは存在するのか?」といった目的で使うことが多いです。

こんな感じで。

Do~Loop文

条件式で判定する、For~Nextよりももうちょっと自由度の高いループです。

Do While 条件式(真の間繰り返す)、という形。

Do Until 条件式(真になるまで繰り返す)、という形。

最初はDoだけにしておいて途中でDoを抜ける、という形。

えっと、WhileだっけUntillだっけ…、と、慣れてないと分かりにくいので、○が□だったらExit Do!っていうほうが明解で初心者さんにはわかりやすいかなーと個人的には思っています。

パスワード要求

Do~Loopは数値に依存しないので、こんなものも作れます。

“abcd”というパスワードが入力されたときのみDoを抜けられます。それまで延々とInputBoxを出し続けるというウザイ仕様ですw

別解

「繰り返し」とはちょっと異なるのですが、上記のパスワード入力はGoToステートメントを使ってこのようにも書けます。

パスワードが間違っていたとき、9行目のGoTo ○○に従って4行目へ戻ります。正しいパスが入力されるまで何度でも戻ります。

動作は同じなので、目的によって使い分けていくのが良いですね。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 618
  • RSSを登録

公開日:2012/07/02
更新日:2014/02/14


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top