カテゴリ: VB.NET 更新日: 2026/02/01

VB.NETのコレクション・配列ループ処理を完全解説!ForEachの使い方

VB.NETでコレクションをループ処理する方法
VB.NETでコレクションをループ処理する方法

先生と生徒の会話形式で理解しよう

生徒

「VB.NETでたくさんのデータをまとめて扱っているのですが、これらを一つずつ順番に表示したり計算したりするにはどうすればいいですか?」

先生

「それは『ループ処理』という技術を使います。配列やリストの中身を一つずつ取り出して処理する、プログラミングでは欠かせない機能です。」

生徒

「初心者でも簡単に書ける方法はありますか?」

先生

「もちろんです!VB.NETにはForEach文という、とても便利な書き方があります。一緒に学んでいきましょう!」

1. 配列とコレクションの復習

1. 配列とコレクションの復習
1. 配列とコレクションの復習

まず、ループ処理を学ぶ前に、対象となる配列(はいれつ)コレクションについて簡単におさらいしましょう。プログラミングにおいて、データは箱のようなもの(変数)に入れて管理しますが、データが100個も200個もある場合、箱を100個用意するのは大変です。そこで、一つの大きな箱の中に仕切りを作って、たくさんのデータをまとめて入れる仕組みが「配列」や「コレクション」です。

例えば、クラスの生徒全員の名前を覚えたり、買い物リストの商品名を記録したりするときに使います。これらの中に格納されたデータを、端から順番に「これかな?」「次はこちら」と確認していく作業を反復処理、あるいはループ処理と呼びます。VB.NETでは、このループ処理をいかに効率よく書くかが、プログラムの読みやすさを左右します。

2. For Each文の基本:一番簡単なループ方法

2. For Each文の基本:一番簡単なループ方法
2. For Each文の基本:一番簡単なループ方法

初心者の方に最もおすすめなのが、このFor Each(フォー・イーチ)文です。英語で「それぞれの~に対して」という意味がある通り、配列やリストの中にある要素を、最初から最後まで自動的に一つずつ取り出してくれます。自分で「何番目を取り出す」といった細かい指定をする必要がないため、書き間違いが少なく、非常に安全な方法です。

現実の世界で例えるなら、ミカンの箱から一つずつミカンを取り出して、腐っていないかチェックする作業に似ています。箱の中に何個入っているかを事前に数えなくても、中身がなくなるまで自動的に繰り返してくれるのが、この構文の素晴らしいところです。

3. 文字列配列をループで処理する実践コード

3. 文字列配列をループで処理する実践コード
3. 文字列配列をループで処理する実践コード

それでは、実際に文字(名前)が入った配列をループ処理してみましょう。以下のコードでは、3人の名前が入った配列を作成し、それを順番にコンソール画面に表示させています。


Dim members() As String = {"田中", "佐藤", "鈴木"}

' membersの中身を一人ずつ「name」という変数に入れて繰り返す
For Each name As String In members
    Console.WriteLine(name & "さん、こんにちは!")
Next

このコードを実行すると、次のような結果が表示されます。


田中さん、こんにちは!
佐藤さん、こんにちは!
鈴木さん、こんにちは!

解説:For Each name As String In membersという部分は、「membersという配列の中から、文字列(String)を一つずつ取り出し、それを一時的にnameという名前で呼びますよ」という意味です。Next(ネクスト)に到達すると、自動的に次の要素を取りにいき、中身がなくなるとループを終了します。

4. 数値のリスト(List)を使った計算ループ

4. 数値のリスト(List)を使った計算ループ
4. 数値のリスト(List)を使った計算ループ

次に、数値が入ったList(リスト)を使ってみましょう。Listは配列と似ていますが、後からデータを追加したり削除したりするのが得意なコレクションです。例えば、テストの点数をリストに入れ、その合計値を計算するプログラムを考えてみます。


Dim scores As New List(Of Integer)
scores.Add(80)
scores.Add(95)
scores.Add(70)

Dim total As Integer = 0

' 点数を一つずつ取り出して合計に加算する
For Each s As Integer In scores
    total = total + s
Next

Console.WriteLine("合計点は " & total & " 点です。")

このプログラムの出力結果は以下の通りです。


合計点は 245 点です。

ここでは、Integer(インティジャー:整数)型のデータを取り出しています。ループの中でtotal = total + sと書くことで、変数totalに次々と点数が足し合わされていきます。パソコンに計算を任せる醍醐味ですね。

5. For~Next文:回数を指定してループする

5. For~Next文:回数を指定してループする
5. For~Next文:回数を指定してループする

For Eachは中身を全部見るのに適していますが、「〇番目から〇番目まで」と範囲を指定したり、「1つ飛ばしで処理したい」といった場合には、For~Next(フォー・ネクスト)文を使います。これは、カウンタ変数(数字を数えるための変数)を使ってループを制御する方法です。

例えば、「1から5まで数字を表示する」という処理は、プログラミング学習の最初の一歩として有名です。このとき、配列の「インデックス(添え字)」という概念を意識する必要があります。VB.NETの配列は0番目から数え始めるというルールを覚えておきましょう。

6. インデックスを使ったループ処理の例

6. インデックスを使ったループ処理の例
6. インデックスを使ったループ処理の例

配列の添え字(番号)を使ってアクセスするコードを見てみましょう。あえて逆順(後ろから前)に表示させるような、少し特殊な処理も可能です。


Dim fruits() As String = {"りんご", "バナナ", "みかん"}

' 0番目から最後の番号(Length - 1)まで繰り返す
For i As Integer = 0 To fruits.Length - 1
    Console.WriteLine(i & "番目の果物は" & fruits(i) & "です。")
Next

実行結果は以下のようになります。


0番目の果物はりんごです。
1番目の果物はバナナです。
2番目の果物はみかんです。

ここで登場したfruits.Lengthというのは、配列の中にいくつデータが入っているか(長さ)を教えてくれる命令です。3個入っている場合、番号は「0, 1, 2」となるため、Length - 1(3ひく1)をして、2番目まで繰り返すように指示しています。これを間違えると、プログラムが「そんな番号の箱はないよ!」とエラーを出して止まってしまうので注意が必要です。

7. ループを途中で抜ける「Exit For」

7. ループを途中で抜ける「Exit For」
7. ループを途中で抜ける「Exit For」

ループの途中で「もう目的のデータが見つかったから終わりたい」という場面もあります。例えば、名簿の中から「田中」さんを探していて、見つかったらそれ以降の1,000人を調べる必要はない、というような時です。このような場合には、Exit For(エグジット・フォー)を使います。

これは、非常口(Exit)のようなもので、ループという部屋から強引に外へ脱出するイメージです。これを使うことで、無駄な計算時間を短縮し、パソコンに優しいプログラムになります。条件分岐のIf文と組み合わせて使うのが一般的です。

8. 初心者がハマりやすい注意点とエラー対策

8. 初心者がハマりやすい注意点とエラー対策
8. 初心者がハマりやすい注意点とエラー対策

ループ処理を書き始めたばかりの人がよく遭遇するのが「無限ループ」です。これは、終わりが来ない条件を設定してしまい、プログラムが永遠に動き続けてしまう現象です。画面が固まったり、パソコンの動作が重くなったりします。もしそうなった場合は、開発環境の停止ボタンを落ち着いて押しましょう。

また、先ほども触れた「インデックスの範囲外(IndexOutOfRangeException)」というエラーも非常によく見かけます。これは「5個しかデータがないのに6番目を見ようとした」ときに起こります。慣れるまではFor Eachを使い、番号を意識する必要があるときだけFor~Nextを使う、という使い分けを心がけると、スムーズにプログラミングを習得できるでしょう。

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NETのクロスサイトスクリプティング(XSS)を完全解説!初心者でもわかる仕組みと対策
New2
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
New3
ASP.NET
ASP.NETのセキュリティ対策を完全ガイド!初心者でもわかるXSS・CSRF・SQLインジェクションの基本
New4
VB.NET
VB.NETで文字列を検索する方法をマスター!IndexOfとContainsの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETで文字列を連結する方法を完全ガイド!&演算子とString.Concatの使い方
No.2
Java&Spring記事人気No2
VB.NET
VB.NETのコレクション操作でよくあるエラーと解決策!初心者向けトラブル脱出ガイド
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの文字列操作を完全ガイド!初心者が覚えるべき基本と宣言方法
No.5
Java&Spring記事人気No5
ASP.NET
ASP.NET MVCでセッションを使う方法を完全解説!初心者でもわかる状態管理入門
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NETの認証の仕組みを完全解説!初心者でもわかるログインの基本
No.7
Java&Spring記事人気No7
VB.NET
VB.NETでコレクションをソートする方法を完全ガイド!並び替えの基本
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NETの認証と認可の違いを完全解説!初心者でもわかるOAuth・JWT・Azure ADの基本