本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[XL] For Each ... Next ステートメントの使用例

文書番号: 402467

最終更新日: 1997/10/20


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP402467

概要

本文書は、Microsoft(R) Visual Basic(R) Programming System Applications Edition (以下 VBA) を使って繰り返しを行う処理をする際の基本の一つである
For Each ...Next ステートメントの使用例を、サンプル モジュールと共に
解説しています。

詳細

For Each ... Next ステートメントは配列やコレクションの各要素に対して、一連の ステートメントを繰り返すフロー制御ステートメントです。
For Each ... Next ループについての詳細は「 Visual Basic(R) ユーザーズ ガイド」 177 ページ「 For Each ... Next 」やオンライン ヘルプの「 For Each ... Next
ステートメント」を参照してください。

1. 基本編

サンプル 1-1

次のサンプル モジュールでは、アクティブになっているブックに含まれるすべての
シート名をメッセージ ボックスに表示しています。
  Sub ForEach1()
  Dim mySheet As Object
      For Each mySheet In ActiveWorkbook.Sheets
          MsgBox mySheet.Name
      Next mySheet
  End Sub

サンプル 1-2

次のサンプル モジュールでは、現在開かれているすべてのファイルのファイル名を
ワークシート Sheet1 のセル A1 から列 (縦) 方向に入力しています。
  Sub ForEach2()
  Dim myBook As Object
  Dim i As Integer
  i = 1
      For Each myBook In Workbooks
          Worksheets("sheet1").Cells(i, 1).Value = myBook.Name
          i = i + 1
      Next myBook
  End Sub

サンプル 1-3

次のサンプル モジュールでは、ワークシート Sheet1 のセル範囲 C1:C10 に数値 0 が 入力されている場合は、そのセルの色を赤に変更しています。
  Sub ForEach3()
  Dim myRange As Object
      For Each myRange In Worksheets("sheet1").Range("c1:c10")
          'セルの値が 0 のときセルの色を赤にします
          If myRange.Value = 0 Then
              myRange.Interior.Color = RGB(255, 0, 0)
          End If
      Next myRange
  End Sub

サンプル 1-4

次のサンプル モジュールでは、アクティブシートに含まれるすべてのオブジェクト
の名前をメッセージ ボックスに表示しています。
  Sub ForEach4()
  Dim myObj As Object
      If TypeName(ActiveSheet) = "Module" Then
          MsgBox "モジュールシートでは、実行できません"
      Else
          For Each myObj In ActiveSheet.DrawingObjects
              MsgBox myObj.Name
          Next myObj
      End If
  End Sub

2. 応用編

サンプル 2-1

次のサンプル モジュールでは、現在開かれているすべてのファイルに含まれるすべて のシート名をメッセージ ボックスに表示しています。
  Sub ForEach5()
  Dim myBook As Object
  Dim mySheet As Object
      For Each myBook In Workbooks
          For Each mySheet In myBook.Sheets
              MsgBox myBook.Name & " : " & mySheet.Name
          Next mySheet
      Next myBook
  End Sub

サンプル 2-2

次のサンプル モジュールでは、ワークシート Sheet2 に作成されているすべての
「埋め込みグラフ」の「グラフ エリア」、「プロット エリア」の大きさを同じ
にし、数値軸の最大値の値を 500 に設定しています。
  Sub ForEach6()
  Dim myGraph As Object
  Sheets("sheet2").Select
  For Each myGraph In ActiveSheet.ChartObjects
      With myGraph
          .Width = 305.4
          .Height = 222.6
          .Activate
      End With
      With ActiveChart
          .PlotArea.Width = 251
          .PlotArea.Height = 202
          .Axes(xlValue).MaximumScale = 500
      End With
  Next myGraph
  End Sub

サンプル 2-3

次のサンプル モジュールでは、ダイアログシート Dialog1 に含まれるオプション
ボタンのうち、選択されたオプション ボタン名をメッセージ ボックスに表示して
います。
ユーザー定義関数 Opt は、引数として受け取ったオプション ボタン コレクショ
ンの中で選択されているオプション ボタンの名前を返しています。
  Sub Dialog_Show()
  Dim dlgoptbt As Object
  Set dlgoptbt = DialogSheets("Dialog1").OptionButtons
      DialogSheets("Dialog1").Show
      MsgBox Opt(dlgoptbt)
  End Sub
  Function Opt(DlgOptBtName As Object)
  Dim OptBt As Object
      For Each OptBt In DlgOptBtName
          If OptBt.Value = xlOn Then
              Opt = OptBt.Name
              'インデックス番号を返したい場合は次のように記述します
              'Opt = OptBt.Index
              Exit For
          End If
      Next OptBt
  End Function

サンプル 2-4

次のサンプル モジュールでは、ワークシート Sheet1 がアクティブになったら、
表示されているツールバーをすべて消し、他のシートがアクティブになったら、
もとのツールバーの表示に戻しています。
マクロ OnlySelectSheet_ToolbarsEnabled を一回だけ実行してください。
  Option Base 1
  Public Tb
  Public i
  Sub OnlySelectSheet_ToolbarsEnabled()
      Worksheets("sheet1").OnSheetActivate = "TbarVisible_False"
      Worksheets("sheet1").OnSheetDeactivate = "TbarVisible_True"
  End Sub
  '表示されているツールバーを消す
  Sub TbarVisible_False()
  ReDim Tb(Application.Toolbars.Count)
  i = 0
      For Each tbar In Application.Toolbars
          If tbar.Visible = True Then
              i = i + 1
              Tb(i) = tbar.Name
              tbar.Visible = False
          End If
      Next tbar
  End Sub
  'ツールバーを復元する
  Sub TbarVisible_True()
      For j = 1 To i
          Application.Toolbars(Tb(j)).Visible = True
      Next j
  End Sub
  '元の設定に戻す際に実行するマクロ
  Sub OnlySelectSheet_ToolbarsReset()
      Worksheets("sheet1").OnSheetActivate = ""
      Worksheets("sheet1").OnSheetDeactivate = ""
  End Sub

Keywords: KBHOWTO KB402467
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system