HOME >>For each文

今回はFor eachについて書いていきます。

これはFor文と似たような感じですが、範囲を指定して処理を繰り返す事が出来ます。

基本構文は↓

For Each 変数名 In コレクション名
    繰り返す処理
NEXT

コレクションにはセルの範囲や、複数シートのグループなど

構成要素が複数あるような集まりを指定します。

簡単な例を作ってみます↓

A2〜C7までの範囲に、探す数字で入力された数字の個数を返す処理



プログラム例↓

Private Sub CommandButton1_Click()
'探す数字を入れる変数
Dim su As Integer
'カウントする為の変数
Dim count As Integer
'カウントの初期化
count = 0
'探す数字を代入
su = Range("E3").Value
'A2〜C7までの範囲を一つずつRanにいれていく。
For Each ran In Range("A2:C7")
 
'ranとsuが同じ場合は
   If ran = su Then
     
'カウントの数を1つ増やす
       count = count + 1
   End If
Next

'個数の欄にcountの値を代入する
Range("E5").Value = count
End Sub


上の処理でわかるように、For eachを使用すると、選択した範囲にあるものを

一つずつ代入してくれるのです。


その他にも色々なコレクションに対して繰り返し処理を行うことが出来ます。

一つの例として、開いているBookのシート名を表示します。

'バリアント型で変数宣言
Dim na As Variant
   
'アクティブのブックのシート名を代入していく
   For Each na In ActiveWorkbook.Worksheets
     
'シート名を表示する
       MsgBox (na.Name)
   Next
End Sub


変数の型はバリアント型かオブジェクト型で宣言する必要があります。

上の処理では、バリアント型にシート名をいれ、変数名.Nameで名前を表示しています。

繰り返す順番を指定する事は出来ないので、指定したい場合は違う処理を使いましょう。


次は配列について書いていきます。


      

アクセスカウンター

関連書籍

inserted by FC2 system