VBAのfor~Eachとは?解説と使用例

ENGINEER.CLUB編集部

ENGINEER.CLUB編集部

はじめに…
日常や仕事で、「この範囲のセルを使って、繰り返し処理をしたい」と思ったことはありませんか?

VBAのfor~Each文を使うと、短時間で作業を終えることができるかもしれません。
for文には、主に「for~Next」「for~Each」の2種類があります。
使い分けとしては、「for~Next」は「〇回処理を繰り返したい」、「for~Each」は「配列や指定したセルの値を順番に処理を繰り返したい」になります。

ここでは「for~Each」の解説を行います。


1.for~Each文について

1-1.for~Each文とは

 ツール等を作成していて、同じ命令を何回も繰り返すときはありませんでしたか?
 for文は、「ある命令を指定した回数だけ繰り返す」処理を行うことができます。

1-2.for~Each文の構文

for~Each文の基本的な構文は下記になります。

Sub main()
  Dim i As Integer
  For Each [要素を受け取る変数名] In [配列やグループ名、セルの範囲] 
    [繰り返したい命令]
  Next
End Sub

2.for~Each文の使用例

2-1.基本的な使用例

for~Each文は、配列やシートで指定したセル値を繰り返し使用できます。
for~Nextで囲まれた処理を、配列の要素数分、または指定したセル数だけ繰り返します。
※ for~Next文と違い、Nextの後ろに何も指定しません。

2-2-1.指定した配列の要素分、処理を繰り返す

例)配列arrの要素を連結して出力する。

Sub main02()
  Dim arr() As Variant
  arr = Array("あ", "い", "う", "え", "お")

  Dim str As Variant
  Dim wk As String
  For Each str In arr
    wk = wk + str
  Next
  MsgBox wk
End Sub

実行結果:結果

2ー2ー2.セルを指定して繰り返す

2-2-1.では配列を指定していましたが、セルを指定してその範囲を繰り返し行うこともできます。
下記範囲のセルを使用します。

セル

Sub main03()
    Dim str As Variant
  Dim wk As Variant
  For Each str In Range("A1:A8")
    wk = wk + ", " + str
  Next
  MsgBox wk
End Sub

実行結果:結果


3.注意点

複数列のセル範囲を指定した場合、for~Eachでの取得順に気をつける必要があります。
下記の例だと、「A1、B1、A2、B2・・・」の順番になります。
下記範囲のセルを使用します。

セル

Sub main04()
  Dim str As Variant
  Dim wk As Variant
  For Each str In Range("A1:B4")
    wk = wk + " " + str
  Next
  MsgBox wk
End Sub

結果


4.最後に

 for~Each文は、指定した値(文字列)を使って処理を繰り返します。
 使いこなすことで、同じ内容を繰り返し行う作業の時間短縮を図ることができます。

 ぜひ、活用していってください。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め定年まで働けるエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって、エンジニアとしてだけでなくビジネスパーソンとして高い水準を目指し、社会や顧客に必要とされることで、関わる人々に感動を与える集団であろうと思っています。

  • 定年までIT業界で働くためのスキルが身につく「感動大学」と「技術勉強会」!
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な「人事評価制度」!
  • 理想のエンジニア像に近づくためのよきアドバイザー「専任コーチ制度」!
  • 稼動確認の徹底により実現できる平均残業時間17時間の働きやすい環境!

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

IT業界を目指す求職者へ

プレミアムSES®で市場価値の高いエンジニアへ

株式会社ボールドが約束する5つのプレミアムとは?

IT業界を目指す求職者へ

プレミアムSES®で市場価値の高いエンジニアへ

株式会社ボールドが約束する5つのプレミアムとは?