pickup

 

目次

Do Whileでループ 伊川が請負った仕事の一部を紹介

こんにちは。伊川(@naonaoke)です。

今回の記事は、Do Whileのループについての紹介です。

初心者のころは、どうしてもループが苦手になりがちです。

特に、無限ループに入ると、停止の方法もわからず、強制終了したこともあります。

特に、このDo While系では、ありがちです。

今回のブログは、こんな人におすすめ

  • いまいち、ループを理解できていない人
  • VBA初心者の人
  • For Next構文以外のループを知りたい人


スポンサーリンク

解決

難しいと思ったら音読してみる。
音読した内容をチャートで記載してみる。
コードに関しては、11行くらいです。

Do Whileのループ

この、Do Whileに似たコードで、Do Until というループもあります。

そんなに違いはないのです。

今回は、
Do While を選択しました。

Do While は条件を満たすまで、繰り返しをします。

つまり、継続する条件を記載します。

For Nextとの違い

For Nextは、繰り返す回数が決まっています。

ただし、実務では、最終行などは、決まっていないので、maxrow等で、最終行を指定します。

今回の業務内容は、競馬のファイルを作成することです。

競馬をご存じの方は、競馬とは、12レースなので、回数は決まっています。

しかし、ごく稀に、11レースしかない場合や、2020年の3月には、3レース~12レースといような場合がありました。

つまり9レースしかないのです。

この突然の出来事に、対応しないと、お金をもらうことはできません。

Do Whileのループ 作業手順 その1 作業内容を確認


上の図には、セルE1に、中山競馬場の、中山という値があります。

A列には、1行置き、中山という値があります。

セルE1と、A列の中山が一致するときは、セルAとその隣のセルBの値を、Sheet2に転記します。


この内容で、中山が、一致するまで、ループをさせます。

また、セルE1には、初めから、値は入力されていないので、お客様が、競馬場を選択するときに、セルE1に値がセットされるようになっています。

Do Whileのループ 作業手順 その2 中山と一致するセルをどうやって見つけるのか

これも色々な方法があります。

Findを使う場合もありますが、今回は、Matchを使いました。

Matchは、一致したセルの縦列の番号を返します。


つまり、cells(Matchで返す数字,1)が、一致した時 というようにします。

Do Whileのループ 作業手順 その3 Matchが返す値を、tenkiという変数に代入する

コード自体は、Application.WorksheetFunctionを使いました。

Application.WorksheetFunctionを利用することで、WorkSheet関数と同じロジックで、VBAのコードを記載することが出来ます。

Excelって本当にすごいと思います。

これで、Match関数が取得した値で、中山と一致するセルを特定することが出来ました。

Do Whileのループ 作業手順 その4 一行置きになっているセルとどのように特定するのか

このような、つまらないことで、初心者の時は、悩みます。

悩んだら、最後、まさに無限ループに陥ります。

一行飛ばしなら、考え方としては、カウントアップの方法を考えればいいのです。


これだけです。

この記載も最初は意味がわからないと思います。

これは、iという変数に、元の、iの値に、2を足して、再度、変数iに代入するという意味です。


上の図が、完成したコードになります。

実行結果


Do Whileのループ 作業手順 その5 転記された、一行置きの行間を削除したい


今回は、For Nextで、空白の行を削除しました。

For Nextの一行置きは、Step1と表現します。

これも覚えてしまえば、カンタンですね。

変数i が、3~20までの間で、3,5,7,9・・・・・・・ と、20まで変化します。


整形されました。

ここがポイント

ここがポイント
Function8.png
動画の中では、For Nextを使わないで、転記する方法も紹介しています。ループを理解している人のコードは、少ないですね。私も、初めのころは、処理の分だけコードを記載していました。しかし、ループを理解すると、また、VBAが面白くなるのです。
動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

今回は、ループの説明をしました。

ループを理解していないと、コードを書くこと自体が面倒なので、しっかりと理解しましょう。

他にもこのサイトで、ループを紹介していますので、参考にしてください。

今回のサンプルファイルは、No171です。

サンプルファイルを購入希望の方はココをクリック
毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事