Excelを勉強しましょう EnjoyExcel

アイコンの機能や関数の説明、VBA初心者向けの勉強方法について情報掲載しています。関数、VBAともに理解が進むように出来るだけ事例を交えて説明しています。

繰り返し処理-2 Do~

f:id:EnjoyExcel:20211103115730p:plain

前回はFor~Nextについて紹介しました。

 

enjoyexcel.hatenablog.com

 

今回はDo~で始まるコードを紹介します。

 

Do~で始まるコードという事は何点かありそうな気がしませんか。そうなんですよ。4つあります。突き詰めていくと良さがあるのかもしれませんが基本的に1個覚えておけばいいかなと思います。対比表を用意しますのでまずはご覧ください。

 

f:id:EnjoyExcel:20211104154239p:plain

 

コードの書き方によって全部同じことが出来るので1個だけ使えれば良いと思います。一応全部紹介しますね。

 

例えばセルA1~A10に1~10の値を入力するというコードをそれぞれの繰り返し処理を使って書いてみます。結果は以下のようになりますね。

f:id:EnjoyExcel:20211104141146p:plain

 

実際のコードです。

Do While~Loop のコードです。

f:id:EnjoyExcel:20211104154333p:plain

Do Until~Loop のコードです。

f:id:EnjoyExcel:20211104154400p:plain

Do~Loop While のコードです。

f:id:EnjoyExcel:20211104154428p:plain

Do~Loop Until のコードです。

f:id:EnjoyExcel:20211104154457p:plain

 

まず動きの基本としては「Do」と「Loop」の行間をループするという事です。加えて「For~Next」のように変数は自動で増えませんので変数を自分で送る為のコードも必要になります。

 

「Do While~Loop」 で確認すると以下の様になります。「繰り返す処理を準備」という表記のところで必要な変数の数値を送るコードも合わせて書く事になります。

f:id:EnjoyExcel:20211105105841p:plain

シンプルに覚えたい方は最初の「Do While~Loop」だけ見直して次の記事に進んでください。おそらくそんなに困る事はないです。

enjoyexcel.hatenablog.com

 

気になる方は以下お付き合いください。他の3つをすべて説明することはしませんがもう少し具体的な例を使ってコードを説明してみます。


繰り返し処理の動作までは良いとして・・・どうですか。4つのコードの差が分かりにくいでしょ。。。

 

差があるとしたら必ず1回は処理を通過するのが後の2つで先の2つは条件に合致しない時はループを通らないという事です。

 

それはどんな時に使い分けるの??と思いますよね。

 

例えば最低1日1回発生する取引があったとします。必ず1回はあるのですから「Do~Loop Until」 か 「Do~Loop While」 を使えば取引が増えた分だけループさせて処理を行うという使い方もあります。

 

ただし上限が分からない時は変数が設定出来ないので困りますけどね・・・。実績から見てありえない上限(100程度/日 の中で上限を1万に設定)にするという手もありますが美しくないです。

 

仮に取引が1回発生するとエクセルシートの1つの行に情報が入力されるという事であれば最終行を取得する事で取引数が分かるのでその値を上限として条件に取り込むという手も・・・何とでもなるわけですよ。ちょっとやってみますか。

 

例題)

なんらかの取引があった際 A列に追番で番号が入力されるという仕様のなかでA列の最終行を上限にしてA列に数値が居たらB列に「取引有」と記入してみましょう。

 

例題のコードは以下の様になります。

f:id:EnjoyExcel:20211104160654p:plain

結果です。A列に番号が居る分だけB列に「取引有」が記入されています。

f:id:EnjoyExcel:20211104161506p:plain

 

加えてこれを「Do While~Loop」、「Do Until~Loop」で書けないかといったらそうでもないのでどのコードを使うのかについては相変わらず困るんですよ。。

 

他にも「While」か「Until」かという問題もある。ちょっと投げやりですが好みで使い分けて良いと思います。

 

・・・そんなわけで私にはメリット、デメリットがうまく伝えられませんがこんな事も出来るよぐらいで知っておいていただければ良いかなと思っています。

 

最初の方にも書きましたが最低1つは使えるようにしておいてくださいね。では最後の「For Each~Next」に進みましょう。