2024.02.16エクセルVBAのユーザーフォームは、エクセルの中央に表示されるのがデフォルトになっています。セルをダブルクリックして入力値をユーザーフォームから選択するような場合、ダブルクリックしたセルの近くにユーザーフォームを表示させたくなります。ネットを検索すると、さまざまな方法が紹介されていますが、私のニーズに合うものは見つかりませんでした。私のニーズは次のとおりです。コードがシンプルであること(こんなことに何10行もコードを書くのはいやだ)ダブルクリックしたセルの近くに表示されること(別にピッタリと一致していなくても良い)エクセルのウィンドウが最大表示以外の場合でも、エクセルのウィンドウ内に表示されること(そのためにセルとの位置関係がズレても構わない)ウィンドウ枠が固定されている場合でも正常に動作すること(これが結構難しい)いろいろと試行錯誤した結果、次のコードで実現できました。With「Target」はダブルクリックしたセルです。「VisibleRange」は固定されたウィンドウ枠の表示範囲です。(ウィンドウ枠が固定されていない場合や固定されているウィンドウ枠の内側に対象セルがある場合は、この部分が不要です。)これらの差に「ActiveWindow]自体の位置を加えることで、ダブルクリックしたセルの相対的な位置の変化量を把握することができます。問題は「460」とか「124」とかの数値です。これらは画面上の絶対的な位置の調整値で、条件を変えながらユーザーフォームを表示させてウィンドウ内に収まる値を探ったものです。(ウィンドウ枠やリボン下端などの位置によって変化します。)ここまでできれば、あとは求めた値をユーザーフォームに設定して表示するだけです。適当ですが、私のニーズを満たすためにはこれで十分でした。(これをちゃんとやろうとすると、恐ろしく面倒なことになります。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ΔホームスタイルVBAアセットを応援VBAアセットの活動を応援していただける方からの協賛金(1口100円)を受け付けています。こちらのボタンを押していただくとPayPalを使って入金できます。1962年生まれ、某法律事務所でアルバイトをしている元陸上自衛官です。プログラマとして働いた経験はありませんが、約30年前から自分自身の業務にVBAを活用してきました。Standard)を取得しています。本サイトの更新などの情報は、Xで発信しています。Reserved.タイトルとURLをコピーしました。