Categories: VBA基礎

EXCEL VBA While Wendの使い方(ループ)

While Wend の使い方

 

●はじめに
EXCEL VBAプログラムを作成する上で、ルーチン処理(繰り返し)は、頻繁に利用しす。For Next と 同じように条件に合わせて繰り返しするなど、VBAコード作成する際には、必要になります。それでは、While WEndの利用方法を説明いたします。

 

●書式の説明
While (条件式)
‘実行処理 ‘
WEnd

 

●プログラム説明  (While WEndを使ったサンプルプログラムを説明します。) ※サンプルプログラム①
変数”I”に対して1~10まで繰り返し、1~10までの値を加算するサンプルプログラムです。

 

Sub While_Wend()

  Dim I, G As Integer

    I = 1               '初期値 I = 1
    G = 0               '合計値 G = 0
        While I <= 10   'Iが10以上になるまで繰り返す。※(繰り返し条件)
           G = G + I    'Iの値をG(合計値)に加算する。
           I = I + 1    'Iの値に+1を加算する。※この式を入れないと繰り返し条件が終了しない。
        Wend
        
    MsgBox G

End Sub

 

●実行結果 ※サンプルプログラム①

 

 

●プログラム説明 ※サンプルプルグラム②
次のサンプルプログラムは、表にある売上金の合計をWhile Wendを使って合計を算出するプログラムです。

 

Sub While_Wend2()

    Dim I, Gokei As Long

    I = 4               '初期値 I = 4
    Gokei = 0           '合計値 G = 0
    
    
        While I < 14     'Iが14を超えるまで繰り返す。※(繰り返し条件)
        
           Gokei = Gokei + Cells(I, "E") '売上値を加算する。
        
           I = I + 1    'Iの値に+1を加算する。※この式を入れないと繰り返し条件が終了しない。
            
        Wend
        
    Cells(I, "E") = Gokei '売上の合計値

End Sub

 

●実行結果
実行後、表の合計欄に売上の合計が算出されました。

 

●実行前 ※下表の様な売上表があります。各行には日付・得意先・担当者・売上のデータが登録されています。(クリックして拡大)

 

●実行後 ※上記のプルグラムが実行され、各行に登録されていた売上の合計が集計され合計欄に表示されました。(クリックして拡大)

 

 

●プログラム説明 サンプルプログラム③
次のサンプルプログラムは、担当者毎に売上金を集計するプログラムです。

 

Sub While_Wend3()

    Dim I, L, Gokei As Long
    Dim tName As String

    I = 4               '初期値 I = 4
    Gokei = 0           '合計値 G = 0
    
        While I < 14     'Iが14を超えるまで繰り返す。※(繰り返し条件)
        
           Gokei = Gokei + Cells(I, "E") '売上値を加算する。
           
           Select Case Cells(I, "D") '担当者名セットする。
                Case Is = Range("D20")  '佐藤さんを集計
                        Range("E20") = Range("E20") + Cells(I, "E")
                Case Is = Range("D21")  '鈴木さんを集計
                        Range("E21") = Range("E21") + Cells(I, "E")
                Case Is = Range("D22")  '田中さんを集計
                        Range("E22") = Range("E22") + Cells(I, "E")
                Case Else
                        MsgBox "集計対象外の担当者が登録されています"
          End Select
        
           I = I + 1    'Iの値に+1を加算する。※この式を入れないと繰り返し条件が終了しない。
            
        Wend
        
    Cells(I, "E") = Gokei '売上の合計値(表の合計)
    Cells(I + 9, "E") = Gokei '売上の合計値(担当者別合計)

End Sub

 

●実行結果
実行後、担当者の表がありまして、担当者毎に売上金が表示されました。

 

●実行前 ※下表の様な売り上げの表があります。担当者毎の売上表には、何も表示されていません。(クリックして拡大)

 

●実行後 ※上記のプログラムを実行する事により、担当者毎に売上金と合計が表示されました。(クリックして拡大)

 

最後まで、ご覧いただきまして誠に有難うございました。
ループ処理は、条件により使い分けがありますので、色々覚えて使い分けて下さい!
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
AKIRA