- ベストアンサー
VBAでのフォーム操作やコントロールの設定方法について
- VBAを使用して複数のフォームを起動する方法や、既に起動中のフォームを確認する方法、さらにフォームを画面最前線に表示する方法を教えてください。
- ExcelシートのコントロールにはLostFocusが使用できますが、VBAのActiveXコントロールにはありません。代替機能や必須チェックの設定方法について教えてください。
- フォームの[?]ボタンでヘルプを出力したい場合、[?]の配置方法やコントロールごとのヘルプの設定方法について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1)について UserFormsコレクションには起動中のフォーム一覧が入っています。 これを使えばと起動中であるか判断できると思います。 (その画面が終了した場合、正しくアンロードする必要があります。) UserFormsの使用例: '現在表示しているフォームのフォーム名とキャプションを表示 Dim w As Object For Each w In UserForms Debug.Print w.Name & ":" & w.caption Next w (2)について 入力チェックをロストフォーカス時に行うのは個人的に好きではないのですが・・・ (大抵痛い目にあうので。) どうしてもというのであれば、APIでメッセージをフックしてイベントを作成すればできるはずです。 ロストフォーカスのイベントを作った事はありませんので、 詳しい事はいえませんが、 マウスのホイールが動いたらというイベントは作れました。 (3)について 一部VBとVBAで勝手が違う為、よく分かりませんが分かる範囲で。 ・[?]を表示するにはフォームのWhatsThisButtonプロパティをTrue。 ・各コントロールの設定はHelpContextIDプロパティに対象のIDを設定。 ・ヘルプファイルの設定はHelpFileプロパティに設定。 HelpFileプロパティですが、VBの場合はAppオブジェクト内にあったのですが、 VBA(EXCEL)の場合Appオブジェクトはなく、検索したところ、 CommandBarButtonオブジェクトがHelpFileプロパティを 持っていました。 CommandBarButtonオブジェクトがどのようなものかは知らないので、 どのように使用・設定すれば良いか不明です。