• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAにていろいろ質問させてください)

VBAでのフォーム操作やコントロールの設定方法について

このQ&Aのポイント
  • VBAを使用して複数のフォームを起動する方法や、既に起動中のフォームを確認する方法、さらにフォームを画面最前線に表示する方法を教えてください。
  • ExcelシートのコントロールにはLostFocusが使用できますが、VBAのActiveXコントロールにはありません。代替機能や必須チェックの設定方法について教えてください。
  • フォームの[?]ボタンでヘルプを出力したい場合、[?]の配置方法やコントロールごとのヘルプの設定方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • y_an
  • ベストアンサー率57% (24/42)
回答No.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オブジェクトがどのようなものかは知らないので、 どのように使用・設定すれば良いか不明です。

関連するQ&A