43 コントロール系 - 開いているフォームで選択されているコントロールを収集する

現在開いているすべてのフォームにおいて、デザインビュー上で選択されているコントロールの一覧を収集します。
  1. 開いているすべてのフォームのコレクションである「Forms」の中から、For Each〜Nextステートメントでひとつずつフォームを取り出し、「Form」オブジェクトの変数「frm」にセットしていきます。

  2. 取り出されたひとつのフォームについて、そのフォームの名前である「Name」プロパティの値をイミディエイトウィンドウに出力します。

  3. さらに、そのフォーム内のすべてのコントロールのコレクションである「Controls」の中から、For Each〜Nextステートメントでひとつずつコントロール情報を取り出し、「Control」オブジェクトの変数「ctl」にセットしていきます。

  4. 取り出されたひとつのコントロール情報のうち、そのコントロールが選択されているどうかを表す「InSelection」プロパティの値を調べます。

  5. その値が”True”であれば選択された状態になっているので、そのコントロールの名前である「Name」プロパティの値をイミディエイトウィンドウに出力します。

    ※「InSelection」プロパティはデザインビューでのみ使用可能です。開いているフォームがすべてデザインビューでない場合はそのフォームでエラーとなります。

Sub Sample_4_18()
'開いているフォームで選択されているコントロールを収集する

  Dim frm As Form
  Dim ctl As Control

  For Each frm In Forms
    Debug.Print "■" & frm.Name
    For Each ctl In frm.Controls
      With ctl
        If .InSelection Then
          Debug.Print .Name
        End If
      End With
    Next ctl
    Debug.Print "------------------"
  Next frm

End Sub
実行例:
※オレンジの枠線で囲まれ、周囲に■のハンドルが付いているのが”選択されている”コントロール




| Index | Prev | Next |



Copyright © T'sWare All rights reserved