大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、「For文」を使う方法について、ご紹介します。For文は、同じ処理をループすることができるものです。For文では、「Step」や、「Ifとの組み合わせ」、「Forの中にForを使う」、「Forを抜ける」といった操作をよく使いますので、マスターしていきましょう。

はじめに

この記事では、「For文」を使う方法について、ご紹介します。

For文を使うと、同じ処理をループすることができるものです。

For文を使う際に、次の方法を覚えておくとスムーズにVBAコードを記載できます。

  • 「Step」を使って増分を設定
  • 「If文」との組み合わせ
  • 「Forの中にFor」を使う
  • Forのループを抜ける

For文の使い方を覚えて、VBAを使っていきましょう。

では、「For文」を使う方法について、解説していきます。

この記事を読むメリット

  • 「For文」の使い方がわかります

目次から見たい項目へ移動すると便利ですよ。

目次

For文を使う

For文を使ってループしてみます。

ループしてみる

「For」でループするVBAコードです。

Sub TEST1()
    
    '1~9までループ
    For i = 1 To 9
        Cells(i, "A") = i '値を入力
    Next
    
End Sub

「For」を使ってループしてみます。

「For」でループする

「For」を使ってループしてみます

「For」を使ってループできました。

変数の増分をStepで設定

変数の増分を「Step」で設定することができます。

2つずつループ

「Step」を使って2つずつループするVBAコードです。

Sub TEST2()
    
    '2つ刻みで1~9までループ
    For i = 1 To 9 Step 2
        Cells(i, "A") = i '値を入力
    Next
    
End Sub

「Step」を使って2つずつ増やしてループしてみます。

「Step」で2つずつループ

「Step」を使って2つずつ増やしてループしてみます

「Step」を使って2つずつ増やしてループできました。

降順にループ

降順にループするVBAコードです。

Stepで「-1」を使うところがポイントです。

Sub TEST3()
    
    '9~1までループ
    For i = 9 To 1 Step -1
        Debug.Print i '値を入力
    Next
    
End Sub

「Step」を使って降順にループしてみます。

「Step」で降順にループ

「Step」を使って降順にループしてみます

「Step」を使って降順にループできました。

ForとIfの組み合わせ

ForとIfを組み合わせて使ってみます。

ループして条件一致した場合に実行

ループして条件に一致した場合に実行することができます。

「3」の場合だけセルに入力

「ForとIf」を組み合わせて、「3」の場合だけセルに入力します。

Sub TEST4()
    
    '1~9までループ
    For i = 1 To 9
        '「3」の場合
        If i = 3 Then
            Cells(i, "A") = i '値を入力
        End If
    Next
    
End Sub

では、実行してみます。

「ForとIf」を組み合わせて、「3」の場合だけセルに入力します

「ForとIf」を組み合わせて、「3」の場合だけセルに入力しました。

「D」を探して「1」を入力

「ForとIf」を組み合わせて、「D」を探すVBAコードです。

Sub TEST5()
    
    '1~9をループ
    For i = 1 To 9
        '「D」の場合
        If Cells(i, "A") = "D" Then
            Cells(i, "B") = 1 '「1」を入力
        End If
    Next
    
End Sub

「ForとIf」を組み合わせて、「D」を探します。

「ForとIf」を組み合わせて、「D」を探します

では、実行してみます。

「ForとIf」を組み合わせて、「D」を探して、「1」を入力できました

「ForとIf」を組み合わせて、「D」を探して、「1」を入力できました。

Forの中にForを使う

Forの中にForを使うこともできます。

行と列をループする

「Forの中にFor」を入力して、行と列をループしてみます。

Sub TEST6()
    
    '1~4をループ
    For i = 1 To 4
        '1~3をループ
        For j = 1 To 3
            '値を出力
            Debug.Print Cells(i, j)
        Next
    Next
    
End Sub

複数行で複数列の表を用意します。

4行3列の表

複数行で複数列の表を用意しました

行と列を「ForとFor」を使って、こんな感じでループします。

ループするイメージ

行と列を「ForとFor」を使ってループしてみます

では、実行してみます。

「ForとFor」で行と列をループできた

「ForとFor」を使って行と列をループできました

「ForとFor」を使って行と列をループできました。

Forのループを抜ける

Forのループを途中で抜ける方法です。

次の2つがあります。

  • Exit Forを使う
  • Gotoを使う

では、それぞれ実行してみます。

Exit Forを使う

Exit Forを使って、Forのループを途中で抜けてみます。

Sub TEST7()
    
    '1~9をループ
    For i = 1 To 9
        '値を出力
        Debug.Print Cells(i, "A")
        '「E」の場合はループを抜ける
        If Cells(i, "A") = "E" Then
            Exit For 'ループを抜ける
        End If
    Next
    
End Sub

表を用意します。

表を用意

表を用意しました

表をループして「E」になったら「Exit For」でループを抜けます。

「E」になったら「Exit For」で抜ける

表をループして「E」になったら「Exit For」でループを抜けます

実行してみます。

ループを抜けた

「For」でループして「Exit For」でループを抜けれました

「For」でループして「Exit For」でループを抜けれました。

Forの中にForがある場合

Forの中にForがある場合でやってみます。

「Forの中にFor」がある場合にループを抜けたい

複数行と複数列の表を用意します。

複数行と複数列の表を用意しました

複数行と複数列で、「E」がきたら「ForとFor」のループを抜けたいです。

複数行と複数列で、「E」がきたら「ForとFor」のループを抜けてみます

方法は、「Exit For」を2回使う方法と、「Goto」を使う方法があります。

「Goto」を使う方法が簡単です。

「Exit For」を2回使ってループを抜ける

「Exit For」を2回使ってループを抜けてみます。

Sub TEST8()
    
    Dim Flag
    Flag = 0
    
    '1~4をループ
    For i = 1 To 4
        '1~3をループ
        For j = 1 To 3
            '値を出力
            Debug.Print Cells(i, j)
            '「E」の場合
            If Cells(i, j) = "E" Then
                Flag = 1 'フラグを立てる
                Exit For 'ループを抜ける
            End If
        Next
        'フラグがオンの場合
        If Flag = 1 Then
            Exit For 'ループを抜ける
        End If
    Next
    
End Sub

「Exit For」を使う方法では、「フラグ」を使って2つの「For」を抜ける必要があります。

「Exit For」を使う方法では、「フラグ」を使って2つの「For」を抜ける必要があります

では、実行してみます。

フラグを使って「Exit For」を2回実行して、「ForとFor」のループを抜けれました

フラグを使って「Exit For」を2回実行して、「ForとFor」のループを抜けれました。

「Goto」を使ってループを抜ける

「Goto」を使ってループを抜けてみます。

こっちの方が簡単です。

Sub TEST9()
    
    '1~4をループ
    For i = 1 To 4
        '1~3をループ
        For j = 1 To 3
            '値を出力
            Debug.Print Cells(i, j)
            '「E」の場合
            If Cells(i, j) = "E" Then
                GoTo A '「A」に移動する
            End If
        Next
    Next

A:

End Sub

「Goto」を使えば、任意の場所に移動できますので、簡単にループを抜けることができます。

「Goto」を使って「ForとFor」のループを抜けてみます

では、実行してみます。

「Goto」を使って「ForとFor」のループを抜けることができました

「Goto」を使って「ForとFor」のループを抜けることができました。

おわりに

この記事では、「For文」を使う方法について、解説しました。

For文を使う際に、次の方法を覚えておくとスムーズにVBAコードを記載できます。

  • 「Step」を使って増分を設定
  • 「If文」との組み合わせ
  • 「Forの中にFor」を使う
  • Forのループを抜ける

For文の使い方を覚えて、VBAを使っていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す