#552 アクティブフォームのコントロールを列挙する方法 フォーム、VBA

アクティブフォームすなわち現在最前面に表示されていてフォーカスがあるフォーム(デザインビューの状態ではなく実行時のビューの状態)について、そこにあるコントロールの情報を列挙する方法です。

ポイントは、「Screen.ActiveForm」でアクティブフォームオブジェクトを取得すること、そのオブジェクト内の「Controls」コレクションの情報をひとつずつ取得していくことです。

次のプログラムでは、アクティブフォーム内にあるすべてのコントロールについて、コントロール名とコントロールの種類をイミディエイトウィンドウに出力しています。もちろんこれをアレンジすれば、それぞれのコントロールの任意のプロパティ情報を列挙することもできます。

Dim frm As Form
Dim ctl As Control
Dim strCtlType As String

'アクティブフォームをセット
Set frm = Screen.ActiveForm

'フォーム名を出力
Debug.Print "フォーム名:" & frm.Name

'フォーム内のコントロールのループ
For Each ctl In frm.Controls
  With ctl
    'コントロール名を出力
    Debug.Print .Name & " → ";
    'コントロールの種類を取得して出力
    Select Case .ControlType
      Case acBoundObjectFrame
        strCtlType = "連結オブジェクト フレーム"
      Case acCheckBox
        strCtlType = "チェック ボックス"
      Case acComboBox
        strCtlType = "コンボ ボックス"
      Case acCommandButton
        strCtlType = "コマンド ボタン"
      Case acCustomControl
        strCtlType = "ActiveX (カスタム) コントロール"
      Case acImage
        strCtlType = "イメージ"
      Case acLabel
        strCtlType = "ラベル"
      Case acLine
        strCtlType = "直線"
      Case acListBox
        strCtlType = "リスト ボックス"
      Case acObjectFrame
        strCtlType = "非連結オブジェクト フレームまたはチャート"
      Case acOptionButton
        strCtlType = "オプション ボタン"
      Case acOptionGroup
        strCtlType = "オプション グループ"
      Case acPage
        strCtlType = "Pageオブジェクト"
      Case acPageBreak
        strCtlType = "改ページ コントロール"
      Case acRectangle
        strCtlType = "四角形コントロール"
      Case acSubform
        strCtlType = "サブフォーム コントロール"
      Case acTabCtl
        strCtlType = "タブ コントロール"
      Case acTextBox
        strCtlType = "テキスト ボックス コントロール"
      Case acToggleButton
        strCtlType = "トグル ボタン コントロール"
    End Select
    Debug.Print strCtlType
  End With
Next ctl



上記プログラムを標準モジュール上に適当なプロシージャとして記述し、いくつかのフォームを同時に表示させている状態で実行してみると、次のような結果になります。

●「商品」フォームがアクティブなとき
「商品」フォームがアクティブ
イミディエイトウィンドウの実行結果

●「得意先」フォームがアクティブなとき
「得意先」フォームがアクティブ
イミディエイトウィンドウの実行結果
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved