Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » Windowsコレクションをループ処理しよう

Windowsコレクションをループ処理しよう

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2007 ビルド13029.20344 Microsoft Store)

ActiveWindowが、アクティブなExcelのウィンドウを表すWindowオブジェクトを取得するプロパティであることを、お伝えしました。

ActiveWindowプロパティで取得できる、Windowオブジェクトに用意されているウィンドウの状態を変更できるプロパティやメソッドのいくつかを確認したら、そのようなWindowオブジェクトがWindowsコレクションに含まれること、WindowオブジェクトのコレクションがWindowsコレクションであることを、意識しましょう。

そのために、まずはWindowsコレクションに対するループ処理の中で、Windowオブジェクトを使ったExcelのウィンドウ操作を、行ってみてください。

[スポンサードリンク]

Excel VBAのWindowsはOSのWindowsとは無関係

なお、Excel VBAのWindowsコレクションが、OSとしてのWindowsと関係があると思ってしまう方がいらっしゃいますが、まったく関係ありません。Excel VBAのWindowsコレクションは、Excelの全ウィンドウを表すオブジェクトです。

ちなみに、Microsoftもこの名前付けには問題があると考えたのでしょうか、PowerPointについては全ウィンドウを表すオブジェクトの名前は「Windows」ではなく「DocumentWindows」です。

Windowsコレクションに対するFor Each~Next

以下のSubプロシージャをステップ実行して、For Each~Next文で個々のWindowオブジェクトが順番に取得され、ウィンドウが操作される様子を確認してください。

Sub Windowを順番に最小化する()
 Dim wnd As Window
 For Each wnd In Windows
  wnd.WindowState = xlMinimized
 Next
End Sub

Windowsプロパティで取得したWindowsコレクションから、順番にWindowオブジェクトを取得して、
  For Each wnd In Windows

Windowオブジェクトに用意されているWindowStateプロパティに、定数xlMinimizedを設定することで、Excelのウィンドウを最小化しています。
  wnd.WindowState = xlMinimized

Windowsコレクションに対するFor~Next

VBAのFor Eahc~Next文は、通常For~Next文で書くことが可能で、Windowsコレクションに対するFor Each~Next文も、For~Next文で書けます。

以下のSubプロシージャを実行すると、最小化されたExcelのウィンドウが、元の大きさに戻ります。

Sub Windowを順番に元のサイズに戻す()
 With Windows
  Dim i As Long
  For i = 1 To .Count
   .Item(i).WindowState = xlNormal
  Next
 End With
End Sub

拙著『いちばんやさしいExcel VBAの教本』のLesson 53「コレクションオブジェクトについて学習しましょう」でお伝えしている、コレクションのItemプロパティを明記したタイプのSubプロシージャです。

Windowsコレクションに含まれるWindowオブジェクトの数だけ、For~Nextループを回して、
  With Windows
   For i = 1 To .Count

Itemプロパティで取得したWindowオブジェクトのWindowStateプロパティに、定数xlNormalを設定して、ウィンドウを元の大きさに戻しています。
    .Item(i).WindowState = xlNormal

上記2つのSubプロシージャを、ステップ実行する様子を動画にしていますので、よろしければご覧ください。→ YouTube「ExcelVBAのWindowsコレクションをループ処理しよう」

ここではWindowStarteプロパティのみを設定していますが、Windowオブジェクトに用意されている他のプロパティやメソッドも、もちろんループ処理内で利用できます。

Windowオブジェクトのいくつかのプロパティ・メソッドをループ処理内で利用するコードもステップ実行し、Windowsコレクション・Windowオブジェクトの理解を深めてください。

最終更新日時:2020-09-16 07:06

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » Windowsコレクションをループ処理しよう

「Windowオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.