VB.NET2002対応 VB.NET2003対応 VB2005対応

 

Visual Basic 中学校 > VB.NET サンプル >

For Each 〜 Nextを使用したくり返し

ここではFor Each Nextを使用したくり返しのサンプルを紹介します。

DoLoopを使用したくり返しのサンプルはDo 〜 Loopを使用したくり返しを参照してください。

ForNextを使用したくり返しのサンプルはFor 〜 Nextを使用したくり返しを参照してください。

くり返し処理についての説明は初級講座第7回 繰り返し処理を参照してください。

コレクションの列挙についての説明は初級講座第28回 コレクションを参照してください。

 

1.コレクションの列挙

以下の例ではコレクションArの内容をメッセージボックスに順に表示する。

VB.NET2003対応 VB2005対応

Dim Ar As New ArrayList

Ar.Add("アメンボ")
Ar.Add("イワシ")
Ar.Add("ウドン")

For
Each St As String In Ar
    MsgBox(St)
Next

■リスト1

 

以下の例でもコレクションArの内容をメッセージボックスに順に表示する。VB.NET2003以上を使用している場合は上述の例の方が好ましい。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Ar As New ArrayList

Ar.Add("アメンボ")
Ar.Add("イワシ")
Ar.Add("ウドン")

Dim St As String

For Each St In Ar
    MsgBox(St)
Next

■リスト2

 

2.配列の列挙

以下の例では配列Arの内容をメッセージボックスに順に表示する。

VB.NET2003対応 VB2005対応

Dim Ar(2) As String

Ar(0) = "アメンボ"
Ar(1) = "イワシ"
Ar(2) = "ウドン"

For Each St As String In Ar
    MsgBox(St)
Next

■リスト3

 

以下の例でも配列Arの内容をメッセージボックスに順に表示する。VB.NET2003以上を使用している場合は上述の例の方が好ましい。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Ar(2) As String

Ar(0) = "アメンボ"
Ar(1) = "イワシ"
Ar(2) = "ウドン"

Dim St As String

For Each St In Ar
    MsgBox(St)
Next

■リスト4

 

3.ループから抜け出す例 - Exit Forの用例

以下の例では配列Arの内容をメッセージボックスに順に表示する。「ン」で終わるものがあった場合はその時点でループを終了する。

VB.NET2003対応 VB2005対応

Dim Ar As New ArrayList

Ar.Add("アヤトリ")
Ar.Add("リンゴ")
Ar.Add("ゴリラ")
Ar.Add("ラドン")
Ar.Add("ンジャメナ")

For
Each St As String In Ar

    MsgBox(St)

   
'「ン」で終わるものがあったらループを終了する。
   
If Strings.Right(St, 1) = "ン" Then
       
Exit For
   
End If

Next

■リスト5

メモ:この例が示しているようにExit Forを使用するとNextの次の行にジャンプします。

 

以下の例でも配列Arの内容をメッセージボックスに順に表示する。「ン」で終わるものがあった場合はその時点でループを終了する。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Ar As New ArrayList
Dim St As
String

Ar.Add("アヤトリ")
Ar.Add("リンゴ")
Ar.Add("ゴリラ")
Ar.Add("ラドン")
Ar.Add("ンジャメナ")

For
Each St In Ar

    MsgBox(St)

   
'「ン」で終わるものがあったらループを終了する。
   
If Strings.Right(St, 1) = "ン" Then
       
Exit For
   
End If

Next

■リスト6

メモ:この例が示しているようにExit Forを使用するとNextの次の行にジャンプします。

 

4.ループを継続する例 - Continue Forの用例

以下の例ではフォームに直接配置されているコントロールのうちButton以外ものを使用不可にする。

VB2005対応

For Each o As Control In Me.Controls

    If TypeOf o Is Button
Then
       
Continue For
   
End If

   
o.Enabled = False

Next

■リスト7

メモ:この例が示しているようにContinue Forを使用するとForの次の行にジャンプします。

 

5.参考:いろいろな例

以下で紹介する例はそのままではVB.NET2002では使用できないが、変数の宣言を独立させるだけで使用可能になる。

 

フォームに直接配置されているコントロールを列挙してEnabledプロパティをFalseにする例

VB.NET2003対応 VB2005対応

For Each o As Control In Me.Controls
    o.Enabled =
False
Next

■リスト8

 

C:\Windowsフォルダにある全ファイル名をListBoxに表示する例

サンプルの実行に必要なもの
ListBox1 フォームにListBoxを配置してください。

VB.NET2003対応 VB2005対応

For Each FileName As String In IO.Directory.GetFiles("C:\Windows")
    ListBox1.Items.Add(FileName)
Next

■リスト9

 

Integer構造体(Int32構造体)の全メソッド名とそのパラメータ数をListBoxに表示する例

サンプルの実行に必要なもの
ListBox1 フォームにListBoxを配置してください。

VB.NET2003対応 VB2005対応

Dim St As String

For Each Info As Reflection.MethodInfo In GetType(Integer).GetMethods
    St = Info.Name
    St &= "(" & Info.GetParameters.Length &
")"
   
ListBox1.Items.Add(St)
Next

■リスト10

 

現在開いているすべてのフォームの名前をListBoxに表示する例

サンプルの実行に必要なもの
ListBox1 フォームにListBoxを配置してください。

VB.NET2003対応 VB2005対応

For Each f As Form In Application.OpenForms
    ListBox1.Items.Add(f.Name)
Next

■リスト11