『Excel』 VBAでちょっと便利!?(その6)

2018年10月31日 仕事のこだわり

Excelでのプログラミング6回目です。

前回に引き続き、処理を繰り返し行う方法を紹介します。

前回の「for ~ to ~ next」では、繰り返す回数を指定して行いましたが、今回は回数ではなく繰り返す条件を指定するものになります。

繰り返し(その2)

 DO ~ LOOP

【構文(書き方)】


 


Do [While 条件式]

<処理>

Loop

または


Do [Until 条件式]

 <処理>

Loop


①は条件式が真(True)の間、つまり条件を満たす間(While)繰り返し<処理>を行います。

 

②は条件式が真(True)になるまで、つまり条件が満たされるまで(Until)繰り返し<処理>を行います。

【条件式】


 

◇比較演算子(大小を比べる式)を使った条件式◇

X = 10 (10と等しい)

X <> 10 (10と等しくない)

X > 10 (10より大きい)

X >= 10 (10以上)

X < 10 (10より小さい)

X <= 10 (10以下)

論理演算子(真為値/値が正しいか正しくないかを判断する式)を使った条件式

比較演算子と併せて使われます。

よく使われるのは、AND(かつ) と OR(あるいは) です。

X > 10 AND X <= 20 (Xが10より大きく、かつ、20以下)

X <= 10 OR X > 20 (Xが10以下、あるいは、20より大きい)

 

では実際にプログラムを入力して試してみましょう。

「開発」タブから「Visual Basic」を選択し、VBEを開いてください。

「挿入」-「標準モジュール」を選択し、プログラムを入力します。

※コメント欄「’~」は入力しなくても大丈夫です。
(説明のために付けてあります。)


Option Explicit

'------------------------------
'セルのA1~A10に1~10を入力する
'------------------------------
Sub test1()

  Dim i As Integer                              '変数「i」を単精度整数として宣言

   i = 1                                        '「i」に初期値1を代入

   Do While i < 11                              '「i」の値が11より小さい間、
                                                'Do~Loopを繰り返す
                                                '11になったらLoopの次の行へ

       Sheets("Sheet1").Cells(i, 1).Value = i   'セル(i行1列)に「i」の値を入力

       i = i + 1                                '「i」の値を1増やす

   Loop                                         '繰り返しここまで

End Sub


'------------------------------
'セルのA1~A10に1~10を入力する
'------------------------------

Sub test2()

  Dim i As Integer                               '変数「i」を単精度整数として宣言

   i = 1                                         '「i」に初期値1を代入

   Do Until i = 11                               '「i」の値が11になるまで、
                                                 'Do~Loopを繰り返す
                                                 '11になったらLoopの次の行へ

       Sheets("Sheet1").Cells(i, 2).Value = i    'セル(i行2列)に「i」の値を入力

       i = i + 1                                 '「i」の値を1増やす

   Loop                                          '繰り返しここまで

End Sub

入力したら、Sub test1()~End Subの間にカーソルがある状態で実行ボタンを押します。

続けて、Sub test2()~End Subの間にカーソルがある状態で実行ボタンを押します。

結果は同じです。

状況に合わせて適宜使い分けてください。

次回は条件判断による処理の分岐(条件によって別な処理を行う)について説明します。

 

 

 

Copyright c syshan.jp all rights reserved.