01-VBA

制御構文|Excel VBA (Part.9)【Do Loop】基本編 | 現役エンジニア&プログラミングスクール講師

目標

Do Loop ステートメントを理解して利用できる

Do~Loopステートメントの概要と利用方法

Do~Loopステートメントとは

VBAで利用される繰り返しの制御構文です。

VBAの繰り返しにはFor~NextステートメントとLoop~Doステートメントがあります。

連続したセルへの処理等に利用されることが多いです。

Do~Loopの基本形の構文とサンプルプロシージャ

基本形の構文(Do While~Loop)

Do While 条件
処理
Loop

条件を満たしている間、処理を繰り返します。

基本形の構文(Do~Loop While)

Do
処理
Loop While 条件

処理を必ず一度は行います。その後は、条件を満たしている間、同じ処理を繰り返します。

サンプルプロシージャ1

Sub DoLoop1()
    Dim i As Integer
    Dim j As Integer
    i = 1
    j = 1
    Do While i < 10
        i = i + 1
        j = i + j
    Loop
    MsgBox "1~10までの合計は「" & j & "」です。"
End Sub

実行結果

基本形の構文(Do Until~Loop)

Do Until 条件
処理
Loop

条件を満たすまで、処理を繰り返します。

基本形の構文(Do~Loop Until)

Do
処理
Loop Until 条件

処理を必ず一度は行います。その後は、条件を満たすまで同じ処理を繰り返します。

サンプルプロシージャ2

Sub DoLoop2()
    Dim i As Integer
    Dim j As Integer
    i = 1
    j = 1
    Do Until i = 10
        i = i + 1
        j = i + j
    Loop
    MsgBox "1~10までの合計は「" & j & "」です。"
End Sub

実行結果

Do~Loopとメッセージボックスの利用

Do~Loopステートメントを含め「If Thenステートメント」や「For Nextステートメント」など条件を利用する文ではメッセージボックスの結果を使用することが頻繁にあります。

メッセージボックスの利用方法については別の記事で取り上げます。

サンプルプロシージャ3

次のプロシージャでは印刷確認にメッセージボックスを利用して「はい」をクリックすると印刷をするというようなプロシージャを想定しています。実際の印刷のプロシージャは割愛して「印刷します」のみを表示するようにしていますが、この部分に印刷処理を書けば実際にコピー機を利用したプリントアウトやPDFファイルへの書き出しを行うことが出来ます。

今回はプリントアウトの実際のプログラムは記述していません。

Sub DoLoop3()
    Dim Ans As Integer
    
    Do While Ans <> vbCancel
        Ans = MsgBox("印刷しますか?", vbYesNoCancel, "印刷確認")
            If Ans = vbYes Then
                MsgBox "印刷します。"
            ElseIf Ans = vbNo Then
                MsgBox "印刷をスキップします"
            Else
            End If
    Loop
End Sub

実行結果

「はい」であれば印刷を行い、ループに戻ります。
「いいえ」であれば印刷は行いませんが、こちらもループに戻ります。
「キャンセル」であれな処理を抜けます。

サンプルプロシージャ4

サンプルプロシージャ3をUntilを利用して記述した場合は以下のようになります。

Sub DoLoop4()
    Dim Ans As Integer
        
    Do Until Ans = vbCancel
        Ans = MsgBox("印刷しますか?", vbYesNoCancel, "印刷確認")
            If Ans = vbYes Then
                MsgBox "印刷します。"
            ElseIf Ans = vbNo Then
                MsgBox "印刷をスキップします"
            Else
            End If
    Loop
End Sub

実行結果

「はい」であれば印刷を行い、ループに戻ります。
「いいえ」であれば印刷は行いませんが、こちらもループに戻ります。
「キャンセル」であれな処理を抜けます。

今回は以上となります。次回はもう少し業務で使えそうなプロシージャを利用します。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

制御構文|Excel VBA (Part.8)【For Each In Next】| 現役エンジニア&プログラミングスクール講師

2022年11月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAのEndプロパティ(1)| 現役エンジニア&プログラミングスクール講師

2022年8月20日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ダイアログボックス|Excel VBA (Part.1)【MsgBox】基本文法編 | 現役エンジニア&プログラミングスクール講師

2022年12月2日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAの「Range & Valueプロパティ」| 現役エンジニア&プログラミングスクール講師

2022年9月9日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

演算子|Excel VBA (Part.3)【比較演算子】応用編(前編)| 現役エンジニア&プログラミングスクール講師

2022年10月27日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAのEndプロパティ(2)| 現役エンジニア&プログラミングスクール講師

2022年8月24日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site