• 締切済み

EXCEL(VBA)について

EXCEL(VBA)でフォーム外をクリックしたらそのフォームを閉じる事は可能でしょうか? ご教授をお願い致します。

みんなの回答

  • kzr260v2
  • ベストアンサー率48% (863/1797)
回答No.1

以下は画面のマウスクリックポジションを取得するWindowsのAPIを使用したサンプルコードです。 https://vba-create.jp/vba-windowsapi-getcursorpos/ もちろんフォームの表示位置やフォームサイズをチェックして範囲外か判定するロジックを自作する必要はあります。 ※ フォームのLostFocusイベントを使用することも考えられます。これは、フォーム外クリック→フォーカスが移りLostFocusイベントが発生という流れを利用する方法です。 ※ >>EXCEL(VBA)でフォーム外をクリックしたらそのフォームを閉じる事は可能でしょうか? 先ほどまでにご案内した方法にて、ご要望を満たすことは可能です。とはいえ、問題が出る可能性もご考慮いただく必要があります。例えば、マウスクリック位置を取得するロジックの場合、フォームが表示したメッセージボックスやコンテキストメニューがたまたまフォーム外に表示されたりはみ出た状態を考慮する必要があります。つまりユーザーからすると、「フォームが表示したものに従っただけなのに、勝手に閉じられた」と感じられてしまう可能性が高いのです。 また「フォーム領域外クリックで閉じる」ことが適切かどうかも考慮が必要です。ユーザーによっては、チャットアプリを使用していたり、重要なメールを受信したらメッセージボックスを出すようカスタマイズしていておかしくありません。このような場合、フォーム外クリックで閉じられると都合が悪いと思います。 ※ 今回はWindows環境でご案内しました。Mac環境の場合WindowsのAPIは使えませんので、MacScript関数でAppleScriptを使うことでmacOSにアクセスする方法が考えられますが、ご要望を満たす方法があるのかまでは未確認です。 以上、参考にならなかったらごめんなさい。

関連するQ&A