1. ホーム
  2. スクリプト・コラム
  3. vbs

VBSの基本 - ループ (for, do, while)

2022-02-08 11:06:03

コードを書くときに、あるコードを何度も実行したいことがよくありますが、そのためにコード内でループを使用することができます。

ループは、条件がFalseになる前に文を繰り返すもの、条件がTrueになる前に文を繰り返すもの、指定した回数だけ文を繰り返すものの3つに分類されます。

For... 次は ステートメントを何回繰り返すかをカウンタで指定する

Do... ループ 条件が成立したとき、または成立するまでループを実行する。

While...Wend。条件がTrueのときにループする

For Each... .Next: コレクション内の各アイテム、または配列内の各要素に対して一連のステートメントを繰り返す

For... .Nextステートメント

ステートメントを繰り返し実行するループの回数をカウンタで指定し、以下の構文で構成します。

For counter = start To end [step step] 'counter is used as the numeric variable for the loop counter, start: the initial value of counter, end: the final value of counter, step: the step length of counter
  [statements]
  [Exit For] 'Exit the loop
  [statements] [Exit For] 'Exit loop
Next 

Dim Count:Count = 0 'Define a variable and assign it a value of 0
For i = 1 To 10 'Loop 10 times, the For statement specifies the count variable and its start and end values
  Count = Count + 1
Next 'The Next statement increments the variable i in steps of 1
MsgBox Count 'Output 10 '

Exit loop: The Exit For statement is used to exit the For... . Next statement.

Dim Count:Count = 0 'Define a variable and assign it the value 0
For i = 1 To 10 step 2 'Loop 10 times with a step size of 2. By using the Step keyword, we can specify the incremental or decremental step value of the count variable
  Count = Count + 1
  If Count = 3 Then 'When the value of the variable Count is 3, exit the current loop
    Exit For 'Exit the loop
  End If
Next
MsgBox Count 'Output 3

ステートメントを繰り返し実行するループの回数をカウンタで指定し、以下の構文で指定します。

For counter = start To end [step step]
  [Statements]
  [Exit For]
  [statements]
Next

主なパラメータです。

counter: ループカウンタとして使用される数値変数。この変数は、配列要素やユーザー定義型の要素にすることはできない。

start: カウンタの初期値。

end: カウンタの最終値。

step: カウンタのステップ。指定しない場合、stepのデフォルト値は1である。

具体的なコード例は以下の通りである。

For...Next

Dim Count:Count = 0 'Define a variable and assign it a value of 0
For i = 1 To 10 'Loop 10 times
  Count = Count + 1
Next
MsgBox Count 'Output 10

ステップには、カウンタループのステップを設定します

Dim Count:Count = 0 'Define a variable and assign a value of 0
For i = 1 To 10 Step 2 'Set the counter step to 2, loop 5 times
  Count = Count + 1
Next
MsgBox Count 'Output 5

ループを終了する

Exit For ステートメントは、For... を終了するために使用されます。Nextステートメントを終了させるために使用します。通常、ループを抜けるのは特定の特殊な場合(例えば、エラーが発生したとき)だけなので、If.... Then... Else ステートメントを使用します。条件が False ならば、ループは通常通り実行されます。

Dim Count:Count = 0 'Define a variable and assign it a value of 0
For i = 1 To 10 'Loop 10 times
  Count = Count + 1
  If Count = 5 Then 'When the value of the variable Count is 5, exit the current loop
    Exit For
  End If
Next
MsgBox Count 'Output 5

条件が成立したら(または成立するまで)ループを実行する

Repeat the statement until the condition becomes True

Dim Count:Count = 5 'Define a variable
Do Until Count = 0 'until the Count variable is 0, otherwise keep looping
  MsgBox Count
  Count = Count -1
Loop
MsgBox "End of loop"

Dim Count:Count = 5 'Define a variable
Do
  MsgBox Count
  Count = Count -1
Loop Until Count = 0 'until the Count variable is 0, otherwise keep looping
MsgBox "Loop Ended"

Repeat a block of statements before the condition becomes True

Dim Count:Count = 5 'Define a variable
Do While Count <> 0 'Stop the loop when the Count variable is 0
  MsgBox Count
  Count = Count -1
Loop
MsgBox "End of loop"

Dim Count:Count = 5 'Define a variable
Do
  MsgBox Count
  Count = Count -1
Loop While Count <> 0 'Stop the loop when the Count variable is 0
MsgBox "End of loop"

The Exit Do statement is used to exit the Do.... Loop loop

Dim Count:Count = 5 'Define a variable
Do While Count <> 0 'Stops the loop when the Count variable is 0
  MsgBox Count
  Count = Count -1
  If Count = 2 Then 'Determine if the value of the Count variable is 2, if so, exit the loop
    Exit Do
  End If
Loop
MsgBox "Loop ended"

While...Wend 条件がTrueのときのループ

Dim Count:Count = 5 'Define a variable
While Count <> 0 'When the value of the Count variable is not equal to 0, it keeps looping
  MsgBox Count
  Count = Count -1 
Wend
MsgBox "End of loop"

While...Wend without Exit statement, loop from beginning to end, to exit in the middle, use Do...Loop statement

For Each... .Nextステートメント

For Each... Next は、指定された回数だけ文を実行するのではなく、配列の各要素やオブジェクトのコレクションの各項目について、一連の文を繰り返し実行します。これは、コレクション内の要素数が分からない場合に便利です。

Dim Dics 'Define a variable
Set Dics = CreateObject("Scripting.Dictionary") 'Define a Dictionary object
Dics.Add "0", "Athens" 'Assign a value to the Dictionary object
Dics.Add "1", "Belgrade"
Dics.Add "2", "Cairo"
For Each Dic in Dics
  MsgBox Dics.Item(Dic) 'Loop through and output Dictionary key values
Next