【Excel】エクセル VBA編 ループ処理の基本 繰り返し処理


ループは最も強力なプログラミング手法の1つです。ループでのエクセルVBAはわずか数のコード行とセルの範囲をループすることができます。

シングルループ

単一のループを使用して、1次元のセル範囲をループできます。

ワークシートにコマンドボタンを配置し、次のコード行を追加します。

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

シート上のコマンドボタンをクリックしたときの結果:

Excel VBAのシングルループ

説明:ForとNextの間のコード行は6回実行されます。i = 1の場合、Excel VBAは行1と列1の交点のセルに値100を入力します。ExcelVBAがNext iに達すると、iが1増えてForステートメントに戻ります。i = 2の場合、Excel VBAは行2と列1の交差点などのセルに値100を入力します。

注:ForとNextの間のコードは常にインデント(タブ)することをお勧めします。これにより、コードが読みやすくなります。

二重ループ

二重ループを使用して、2次元のセル範囲をループできます。

ワークシートにコマンドボタンを配置し、次のコード行を追加します。

暗く Iのように 整数、J としては 整数

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

シート上のコマンドボタンをクリックしたときの結果:

Excel VBAの二重ループ

説明:i = 1およびj = 1の場合、Excel VBAは行1と列1の交点のセルに値100を入力します。ExcelVBAがNext jに達すると、jが1増えてFor jステートメントに戻ります。 。i = 1およびj = 2の場合、Excel VBAは行1と列2の交点のセルに値100を入力します。次に、jは1から2までしか実行されないため、Excel VBAはNext jを無視します。つまり、iが1増え、For i文に戻ります。i = 2およびj = 1の場合、Excel VBAは2行目と1列目の交点などのセルに値100を入力します。

トリプルループ

トリプルループを使用して、複数のExcelワークシートの2次元範囲をループ処理できます。

ワークシートにコマンドボタンを配置し、次のコード行を追加します。

DIM C として 整数、私として 整数、J としては 整数

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

説明:二重ループのコードと比較して行われた唯一の変更は、もう1つループを追加し、ワークシート(c)を追加したことです。Cellsの前でc = 1の最初のシート、c = 2の2番目のシート、c = 3の3番目のシートの2次元範囲を取得します。この結果を見るには、Excelファイルをダウンロードしてください。

ループ中に実行

For Nextループの他に、Excel VBAには他のループがあります。たとえば、Do Whileループです。Do WhileとLoopの間に配置されたコードは、Do Whileの後の部分が真である限り繰り返されます。

1. ワークシートにコマンドボタンを配置して、次のコード行を追加します。

Dim i As Integer
i = 1Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

シート上のコマンドボタンをクリックしたときの結果:

ループ中に実行

説明:iが6未満である限り、Excel VBAは、行iと列1の交点にあるセルに値20を入力し、iを1ずつ増加させます。Excel VBA(および他のプログラミング言語)では、記号 ‘= ‘という意味になります。等しいという意味ではありません。つまり、i = i + 1は、iがi + 1になることを意味します。言い換えると、iの現在値を取得し、それに1を加算します。たとえば、i = 1の場合、iは1 + 1 = 2になります。結果として、値20は列Aに5回配置されます(iが6になるとExcel VBAが停止するため、6ではなく)。

2.列Aに数字をいくつか入力します。

任意の数の行

3. ワークシートにコマンドボタンを配置し、次のコード行を追加します。

Dim i As Integer
i = 1Do While Cells(i, 1).Value <> “”
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

シート上のコマンドボタンをクリックしたときの結果:

高度なDo Whileループ

説明:Cells(i、1).Valueが空でない限り(<>は等しくないことを意味します)、Excel VBAは行iと列2の交点でセルに値を入力します。これは値より10大きい値です。 Cells(7、1).Valueが空なので、iが7のときExcel VBAは停止します。これは、ワークシート上の任意の数の行をループ処理するのに最適な方法です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です