Microsoft ExcelのVBAでのためにループの7例
_VBAプログラムを作成していて、同じタスクを複数回実行する場合は、VBAforループを使用してこれを実行できます。 VBAはシーケンシャルプログラミング言語です。コードの各行は、読み取るコードの行がなくなるまで上から下に実行されます。戻ってタスクを実行する場合は、マクロコードを使用して強制する必要があります。
ループで結果が得られます。_
VBAのForループは、最も一般的なタイプのループの1つです。 Forループには、ForNextとForEach InNextの2つの形式があります。 Forループは通常、アイテムまたは番号のリストを順番に移動するために使用されます。
任意の時点でForループを終了するには、exitステートメントを使用できます。
For Loopは、終了条件に達するまでぐるぐる回ります。終了条件が満たされると、プログラミングフローは自然な方向に下向きに続きます。
The For … Next loop has the following syntax: For counter = start_counter To end_counter 'Do something here (your code) Next counter
実際には、ループの「タイムキーパー」として変数カウンターを使用するループを作成しています。ループの開始時にstart_counterに等しい値に設定し、終了条件が満たされるまで各ループ中に1ずつインクリメントします。ループは、カウンターの値がend_counterと等しくなるまで実行されます。上記の両方の値が一致したときにループが最後に実行され、ループが停止します。
上記のすべてが一部の人にとって混乱する可能性があるので、いくつかの例を挙げて、準備を整えてForLoopの学習を始めましょう。
新しいExcelワークブックを作成し、拡張子.xlsmで保存します。VisualBasicエディター画面を起動するには、ALT + F11を使用します。新しいモジュールの挿入VB標準モジュールに以下のコードをコピーします
ループ1(msgboxで数値を表示)
Sub Loop1() Dim StartNumber As Integer Dim EndNumber As Integer EndNumber = 5 For StartNumber = 1 To EndNumber MsgBox StartNumber & " is " & "Your StartNumber" Next StartNumber End Sub
コードの説明:
VBAコードでは、StartNumberに値を割り当てる必要があります。EndNumberは、ループの開始点として整数として宣言される変数です。これらの値は任意の数値であり、EndNumberは5から始まります。StartNumberは1から開始されます。コードが1(StartNumber)から5(EndNumber)で始まることを意味します
-
MsgBox StartNumber& “is”& “Your StartNumber”は、次のメッセージボックスを表示します
Loop2(値を入力)
Sub Loop2() 'Fills cells A1:A56 with values of X by looping' --- Comment 'Increase value of X by 1 in each loop' --- Comment Dim X As Integer For X = 1 To 56 Range("A" & X).Value = X Next X End Sub
コードの説明:
Xを整数として割り当てました。X= 1から56の場合。これは1から始まり、毎回1ずつ増加して56まで続きます* Range( “A”&X).Value = X;この行はXの値を格納し、範囲A1からA56に渡されます
Loop3(セルを背景色で塗りつぶします)
Sub Loop3() ' Fills cells B1:B56 with the 56 background colours' --- Comment Dim X As Integer For X = 1 To 56 Range("B" & X).Select With Selection.Interior .ColorIndex = X .Pattern = xlSolid End With Next X End Sub
コードの説明:
Xを整数として割り当てました。X= 1の場合、56は1から始まり、Range( “B”&X).Select;のたびに1ずつ増加して56まで続きます。この行はXの値を格納し、セルB1からB56までを選択します。次の4行、つまりSelection.Interiorは、内部のカラーインデックスを選択し、そのカラーインデックスのXから値を取得して、1が黒に属するようにします。 2は白に属します。赤などの場合は3
ループ4(2の増分で値を入力)
デフォルトでは、ステップ値は順方向1ですが、1より大きい数に設定できます。
Sub Loop4() ' Fills every second cell from C1:C50 with values of X' --- Comment Dim X As Integer For X = 1 To 50 Step 2 Range("C" & X).Value = X Next X End Sub
コードの説明:
Xを整数として割り当てました。X= 1〜50の場合ステップ2。これは、Xの1から50まで、毎回2ずつ増加します* Range( “C”&X).Value = X;この行はXの値を格納し、C1からC50の範囲に渡されます
ループ5(STEP命令を使用した逆方向のVBA Forループ)
Forループのカウンターが低い値から高い値にのみ移動する必要はありません。代わりに、Forループも逆方向に実行できます。つまり、高い値から低い値になります。
ステップ値はデフォルトで順方向1ですが、逆の順序で数値に設定することもできます。
Sub Loop5() ' Fills cells from D1:D50 with values of X' --- Comment ' In this case X decreases by 1' --- Comment Dim X As Integer, Row As Integer Row = 1 For X = 50 To 0 Step -1 Range("D" & Row).Value = X Row = Row + 1 Next X End Sub
コードの説明:
Xと行を整数として割り当てました。行には値1が含まれます。X= 50から0の場合ステップ-1;これは50から始まり、Xで1ずつ減少して0になりますRange( “D”&Row).Value = X;この行はXの値を格納し、D1からD50の範囲に渡されます
ループ6(STEP-2を使用して1つおきのセルをリバースで埋めます)
上記のForループの例では、ステップと順序を使用して、Forループが順方向または逆方向のどちらで機能するかを確認できます。
Sub Loop6() ' Fills every second cell from E1:E100 with values of X' --- Comment ' In this case X decreases by 2' --- Comment Dim X As Integer, Row As Integer Row = 1 For X = 100 To 0 Step -2 Range("E" & Row).Value = X Row = Row + 2 Next X End Sub
コードの説明:
Xと行を整数として割り当てました。行には値1が含まれます。X= 100から0の場合ステップ-2;これは100から始まり、Xで2ずつ減少して0になりますRange( “E”&Row).Value = X;この行はXの値を格納し、E1からE100の範囲に渡されます
ループ7(IF条件のForループ:特定のセルから始まるセルを埋める)これにより、XがIF条件を満たすまで、セルF11のセルが値11で埋められます
Sub Loop7() ' Starts to fill cells F11:F100 with values of X' --- Comment ' This will exit from the loop after 50' --- Comment Dim X As Integer For X = 11 To 100 Range("F" & X).Value = X If X = 50 Then MsgBox ("Bye Bye") Exit For End If Next X End Sub
コードの説明:
Xを整数として割り当てました。X= 11から100の場合。条件が満たされるまで、Xで1ずつ増加する11から開始します* Range( “F”&X).Value = X;この行はXの値を格納し、条件が満たされるまで範囲F11に渡されます
-
セルF50に値50を入力すると、次のメッセージボックスが表示されます
私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。
_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください