Excelマクロを1クリックで動作させる設定にしている場合、デュアルディスプレイ環境ではメイン画面では正常でも、サブ画面では初回クリックが反応せず、2回クリックする必要がある現象が発生することがあります。この記事では、サブ画面でも正常に動作させるための原因と対策を解説します。
原因の理解
サブ画面で初回クリックが反応しない原因として、Excelのウィンドウのフォーカスや画面解像度の扱い、VBAマクロ内のアクティブウィンドウ指定が関係しています。
特に、ActiveSheetやActiveWindowを前提としたマクロでは、サブ画面に移動した時に初回クリックでウィンドウがアクティブにならず、2回目で反応するケースが多く見られます。
対策1:ウィンドウをアクティブ化する
マクロの冒頭に、対象のウィンドウやシートをアクティブ化するコードを追加すると、サブ画面でも1回で反応することがあります。
例:
Worksheets(“Sheet1”).Activate
Application.WindowState = xlNormal
対策2:画面解像度と拡大縮小の確認
サブ画面の解像度や拡大縮小設定がメイン画面と異なる場合、マウスクリックの座標認識やウィンドウのフォーカスに影響することがあります。解像度を統一するか、拡大縮小を100%に設定することで安定することがあります。
対策3:VBAのクリックイベント設定の見直し
フォームコントロールやActiveXコントロールを使用している場合、ClickイベントやMouseUpイベントを活用すると、サブ画面でも確実に反応させやすくなります。
また、Application.ScreenUpdatingやDoEventsを適切に挿入することで、初回クリック時の反応遅延を回避できることがあります。
まとめ
デュアルディスプレイ環境でExcelマクロをサブ画面でも1クリックで反応させるには、ウィンドウやシートのアクティブ化、画面解像度の統一、VBAイベント処理の見直しが効果的です。これらを組み合わせることで、サブ画面でも安定した操作を実現できます。


コメント