Excel!VBAで繰り返しNO1!Do Loopにおまかせ

( ノ゚Д゚)こんばんは、こんにちは、おはようございます。おやすみなさい! とっちーです。

本日は、Excelの条件判断を行うステートメントのご紹介です、楽しくお話をしたい!と思います。

Do While  条件式    繰り返し作業 Loop

Do Until 条件式  繰り返し作業 Loop

Do 繰り返し作業  Loop   While 条件式

Do 繰り返し作業  Loop   Until   条件式

の4つについてご説明させていただきます。

 

プログラムを動かすためにしておくこと

 

変数の宣言

 

まず、プログラムを作るうえでは必ず変数を宣言するようにしましょう。

 

今回使用している宣言した型式は、長整数型 Long(-2,147,483,648~2,147,483,647の間の整数)を使用しています。整数型の Integer(-32,768~32,767の間の整数)でも、整数間を超えない場合は問題ありません。ちなみにオーバーフローで処理が止まるときは、宣言間違いも視野に入れておきましょう。

 

オブジェクト型のWorkseetは、シートの名前が長い場合などに活用するととても便利です。

 

都の銀行東北支店というシートがあるとします。

 

例えば、RangeでもCellsでもいいのですが、

Worksheets(“都の銀行東北支店”).Range(“E5”).Select

を何回も記述するのと、

dim wSH  As Worksheet ’変数を宣言

Set wSH = Worksheets(“都の銀行東北支店”) ’wSHにWorksheets(“都の銀行東北支店”)を代入するとですね、

Worksheets(“都の銀行東北支店”).Range(“E5”).Selectの記述が、wSH.Range(“E5”).Selectで大丈夫になるんです。便利でしょう。おススメいたします。

文字列型のStringは、文字を代入するときに使用します。今回は不要なのに記述してしまいましたが、追って有効活用します。出来れば、使用しない型の宣言を行うのは控えましょう。

 

条件判断で繰り返しを行う方法

 

其の一 Do While 条件式

 

Do While 条件式

 繰返し処理

Loopの入口判断で行う、条件付繰り返しステートメントになります。

 

 

DO While 条件式は、条件が満たしている間は繰り消し処理を行い、条件を満たさなくなった時に処理を終了します。

箱詰め作業に置き換えると、処理する箱詰めの作業がある限り繰り返し作業を行うということになります。

 

条件式には、演算子や比較演算子=、<、>、<>を用いて行います。記述を複雑にしても使用するには問題はありませんが、出来ればそのような場合は変数を新たに宣言して活用するようにしましょう。

以下は、左側のシート内のB列のデータがある限り、A列に番号をつけましょう。というプログラムを作成しております。

 

 

 

プログラム途中にある記述セルの初期化の部分は、空白データなどの残留防止のために癖付けしているものなので、ついつい記入をしてしまう私ですが、何の問題も無ければ不要ですので記述しなくても大丈夫です。

 

カウント開始行設定のcnt = 3は、カウントする対象(4行目)のすぐ上のセルの行を設定しています。行目は、作成する位置によって変化します。

 

Do While WH1.Cells(cnt + 1, 2).Value <> “” 

Do Whileは、WH1.Cells(cnt + 1, 2).Valueの場所が 、<> “”空白でない限り以下の処理をする

 

WH1.Cells(cnt + 1, 1).Value = cnt – 2

WH1.Cells(cnt + 1, 1).Valueに変数cntから2を引いた数を引き渡す。(.Valueの記述も癖付けしましょう。)

 

cnt = cnt + 1

繰り返し作業では、今回空白でない限りと指定していますので行数をカウントさせてるために行う式になります。

 

Loop

このLoopはDoで記述を始めた場合はセットで記述を行うようにしましょう。

 

以上の5行は繰り返し処理ステートメントになっています。変数の宣言文と各使用する変数の初期設定を設定して繰り返し処理ステートメントを記述することにより使用できる流れになります。

上図のそれ以降のステートメントは、1行のみ空白が合った場合の処理を追記しております。

 

 

其の二 Do Until 条件式

 

Do Until 条件式

 

 繰返し処理

Loopの入口判断で行う、条件付繰り返しステートメントになります。

 

 

DO Until 条件式は、条件が満たさない間は繰り消し処理を行い、条件を満たされると処理を終了します。

箱詰め作業に置き換えると、処理する箱詰めの作業があろうがなかろうが、時間が終了するまで作業を行うということになります。

 

以下は、左側のシート内のD列の年齢の記述の欄が空白になるまで、E列の総年齢に類型番号をつけましょう。というプログラムを作成しております。

 

 

Do Until WH1.Cells(cnt, 4).Value = “”

Do Untilは、WH1.Cells(cnt , 4).Valueの場所が 、= “”空白になるまでの処理をする  

 

WH1.Cells(cnt, 5).Value = WH1.Cells(cnt, 4).Value + gou

WH1.Cells(cnt, 5).ValueにWH1.Cells(cnt, 4).Value に変数gouをたした数を引き渡す。.Valueの記述も癖付けしましょう。

 

gou = WH1.Cells(cnt, 5).Value

gouにWH1.Cells(cnt, 5).Value数を引き渡す。

 

cnt = cnt + 1

繰り返し作業では、今回空白なるまでと指定していますので行数をカウントさせてるために行う式になります。

 

Loop

このLoopはDoで記述を始めた場合はセットで記述を行うようにしましょう。

 

 

其の三

Do 

 繰返し処理

Loop While 条件式 出口判断で行う、条件付繰り返しステートメントになります。

 

 

DO ~Loop While 条件式 は、条件が満たしている間は繰り消し処理を行い、条件を満たさなくなった時に処理を終了します。ただし最低1回はプログラム処理を行います。

箱詰め作業に置き換えると、処理する箱詰めの作業がある限り繰り返し作業を行うということになります。

 

 

Do

WH1.Cells(cnt, 5).Value = WH1.Cells(cnt, 4).Value + gou

WH1.Cells(cnt, 5).ValueにWH1.Cells(cnt, 4).Value に変数gouをたした数を引き渡す。.Valueの記述も癖付けしましょう。

 

gou = WH1.Cells(cnt, 5).Value

gouにWH1.Cells(cnt, 5).Value数を引き渡す。

 

cnt = cnt + 1

繰り返し作業では、今回E列の数が200未満の間までと指定していますので行数をカウントさせてるために行う式になります。

ただし、条件式が下側にあるため最低1回が余分に処理されます。

 

Loop While WH1.Cells(cnt – 1, 5).Value < 200

WH1.Cells(cnt – 1, 5).Valueの値が200未満の間処理を行う。 

 

 

其の四

Do 

 繰返し処理

Loop Until 条件式 出口判断で行う、条件付繰り返しステートメントになります。

 

 

DO~Loop Until 条件式は、条件が満たさない間は繰り消し処理を行い、条件を満たされると処理を終了します。ただし最低1回はプログラム処理を行います。

箱詰め作業に置き換えると、処理する箱詰めの作業があろうがなかろうが、時間が終了するまで作業を行うということになります。

 

Do

WH1.Cells(cnt, 5).Value = WH1.Cells(cnt, 4).Value + gou

WH1.Cells(cnt, 5).ValueにWH1.Cells(cnt, 4).Value に変数gouをたした数を引き渡す。.Valueの記述も癖付けしましょう。

 

gou = WH1.Cells(cnt, 5).Value              

gouにWH1.Cells(cnt, 5).Value数を引き渡す。

 

cnt = cnt + 1                      

繰り返し作業では、今回D列に空白があるまでと指定していますので行数をカウントさせてるために行う式になります。

 

Loop Until WH1.Cells(cnt, 4).Value = “”          

WH1.Cells(cnt, 4).Value の値が空白になるまで処理を行う。

 

 

 

まとめ

 

 

今回は、ExcelのVBAで条件付繰り返しステートメントについてお話してみました。

繰り返し構文も使い方によっては、大変便利です。

ただ、判断設定を誤ると無限ループの罠に陥り作成していたプログラムは吹っ飛んでしまいます。こまめな保存と確認をしてからSub/ユーザーホームの実行をするようにいたしましょう。

 

確認作業は、保存の後を守りましょう。泣いちゃいます。

今日も安心してプロシージャを作成できるように

そんな、お手伝いが出来ることを願っています。

 

 

楽しくお仕事できたらなって。そう思っていただけたら幸せです。

 

ま、何でも楽しくしていただけたら、うれしいです。ものすごく。