エクセルVBAのループ
シングルループ | ダブルループ | トリプルループ | DO Whileループ
ループは、最も強力なプログラミング技術の一つです。エクセルVBAのループは、わずか数のコード行とセルの範囲をループすることができます。
単一ループ
あなたは、細胞の1次元の範囲をループする単一のループを使用することができます。
ワークシート上の/ VBAの作成・マクロ#コマンドボタンを[コマンドボタン] `と次のコード行を追加します:`リンクを置き
Dim i As Integer For i = 1 To 6 Cells(i, 1).Value = 100 Next i
あなたはシート上のコマンドボタンをクリックすると、結果:
説明のための:次へとの間のコード行を6回実行されます。 I = 1のために、Excel VBAは、次に私は、それが1とIを増加し、ステートメントの背面にジャンプに到達すると、ExcelのVBAは、行1および列1の交点のセルに値100を入力します。 I = 2のため、エクセルVBA等行2列1、の交点のセルに値100に入射
注:それは常にインデント(タブ)の良い練習と次のために単語間のコードです。これは読み、あなたのコードが簡単になります。
ダブルループ
あなたは、セルの2次元範囲をループし、二重ループを使用することができます。
ワークシート上の/ VBAの作成・マクロ#コマンドボタンを[コマンドボタン] `と次のコード行を追加します:`リンクを置き
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
あなたはシート上のコマンドボタンをクリックすると、結果:
説明:私は1及びj = = 1の場合、ExcelのVBAのExcel VBAは次Jに到達行1および列1の交点のセルに値100に入り、それは1とJを増大させ、Jステートメントの場合にジャンプして戻ります。 jが1つだけからのExcel VBAは、次のIに到達2に実行されるため、iが1とjを=ため= 2と、Excel VBAは、行1および列2次への交差部にセルに値100に入ると、Excel VBA次にjを無視します、それは1とIを増加し、私の文の場合はバックにジャンプします。 I 2及びj = 1 =ため、ExcelのVBAは
等行2列1、の交点にセルに値100に入ります[トリプルループ]] 3重ループ
あなたは、複数のExcelのワークシート上の2次元の範囲をループするトリプルループを使用することができます。
ワークシート上の/ VBAの作成・マクロ#コマンドボタンを[コマンドボタン] `と次のコード行を追加します:`リンクを置き
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)を追加したことです。細胞の前方にC = 1の最初のシート上の2次元の範囲を得るために、C = 2のための第二シートおよびc = 3のダウンロードのための第3のシートのExcelファイルには、この結果を確認します。
んがループ
以下のための次のループに加え、エクセルVBAの他のループが存在します。例えば、doループしながら。一方で、コードは、DOとの間に配置され、真のですが、ループは、DOの後の部分である限り繰り返されます。
-
コマンドボタンワークシート上で、次のコード行を追加します。
Dim i As Integer i = 1 Do While i < 6 Cells(i, 1).Value = 20 i = i + 1 Loop
あなたはシート上のコマンドボタンをクリックすると、結果:
説明:私は6未満である限り、ExcelのVBAは、(他のプログラミング言語とで)1のエクセルVBAによって行iおよび列1及び増分Iの交点にあるセルにシンボル「=を値20に入ります」という意味になります。それは同じ意味ではありません。私の現在の値を取ると、それに1を追加します。私は言い換えれば1を+になっI + 1つの手段を=私はそう。 I = 1の場合、例えば、私は結果として1 + 1 = 2となる(iは6に等しいときのExcel VBAが停止するためではない6個)、値20をカラムAに5回置かれます。
列Aでいくつかの数字を入力します
-
コマンドボタンワークシート上で、次のコード行を追加します。
Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "" Cells(i, 2).Value = Cells(i, 1).Value + 10 i = i + 1 Loop
あなたはシート上のコマンドボタンをクリックすると、結果:
説明:長い細胞(I、1).Valueのは、(<>手段と等しくない)が空でない限り、エクセルVBA行の交差点I及び列2のセルに値を入力し、値10よりも高いです細胞は(7,1).Valueのが空であるので、私は7に等しい場合、行iおよび列の交点にあるセルに1のExcel VBAが停止します。これは、ワークシート上の任意の行数をループするのに最適な方法です。