OR
誰でも自由に記事を投稿・編集できるオープンリファレンス
記事ID:700
区分:プログラム  |  分類:VB  |  最終更新日:2016/03/31
クリエイティブ・コモンズ 表示-継承ライセンス 2.1
【VB/VBA】For~Nextステートメント制御
関連タグ:VB.NET, VB6, VBA, for文
このエントリーをはてなブックマークに追加      
本文
履歴
編集
閲覧数: 3,912
Excel VBA ナレッジ > 【VB/VBA】For~Nextステートメント制御

条件により繰り返し処理を行う場合、特に繰り返す回数が決まっている場合などはfor文を使用します。

VB/VBAではFor~Nextステートメントを使用して、以下のように記述します。

 

【For~Nextステートメントによる制御構文】

For カウンタ変数 = 初期値 To 最終カウンタ値
    繰り返し処理
Next

 

For~Nextステートメントはカウンタ変数に初期値を設定し、処理を繰り返すことでカウンタ変数が1ずつカウントアップされます。最終的にカウンタ変数が最終カウンタ値になった時点でループを抜けます。カウントアップ値は通常1ですので、カウンタ変数の初期値に1を設定した場合、最終カウンタ値は繰り返し処理数となります。

 

【単純なFor~Nextステートメントの使用方法】

For i = 1 To 10
    繰り返し処理
Next

 

上記例では繰り返し処理を10回繰り返します。

ただし、カウントアップ値はStep文で指定することもできます。以下例ではカウンタ値が2ずつカウントアップされますので、繰り返し処理は5回実行されます。

 

【Step値を指定した場合のFor~Nextステートメントの使用方法】

For i = 1 To 10 Step 2
    繰り返し処理
Next

 

また、条件により途中で処理を抜ける場合は、Exitステートメントを使用します。

 

【Exitステートメントによるループ処理の中断】

Dim i, sum As Integer
For i = 1 To 10
    If sum > 20 Then
        Exit For
    End If
    sum = sum + i
Next

 

上記例ではカウンタ変数iの合計値をsum変数に加算し、sum変数が20を超えた時点でforループを抜けます。

サンプルプログラム

Public Sub sample()
    Dim varArray1() As Variant
    Dim varArray2() As Variant
    
    varArray1 = Array("ロンドン", "東京", "パリ", "ニューヨーク")
    varArray2 = Array("シンガポール", "上海", "ソウル", "東京")
    
    For i = 0 To UBound(varArray1)
        For j = 0 To UBound(varArray2)
            If varArray1(i) = varArray2(j) Then
                Debug.Print varArray1(i)
            End If
        Next j
    Next i
    
End Sub

※ 上記例では二つの配列をforループで検索し、値が一致するものを出力します。二つの配列で共通するのは「東京」だけですので、結果は「東京」のみ出力されます。

関連記事
関連記事はありません。
外部リンク
外部リンクはありません。
- 記事検索 -