#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 上記プログラムを標準モジュール上に適当なプロシージャとして記述し、いくつかのフォームを同時に表示させている状態で実行してみると、次のような結果になります。 ●「商品」フォームがアクティブなとき ●「得意先」フォームがアクティブなとき |
|||
|
Copyright © T'sWare All rights reserved |