Excel用DatePickerで使っていた、セルの右側にユーザーフォームを表示する処理を整理し、共通機能をモジュール化&実際に使ってみた実装例です。
一応、特徴としては
- DPI(Dots Per Inch)やPPI(Points Per Inch)の値をConstで決め打ちしたりせずに実装
- シートの拡大/縮小にも対応(ユーザーフォーム自体の大きさは変わりません)
といったところです。
なお、仕組みを詳しく知りたい方は、解説記事を書きましたので、そちらを御覧ください。
こちらからExcel マクロ有効ワークシートをダウンロードしてお試しください
右上にあるダウンロードボタンを押してダウンロードします。
ダウンロードされたマクロ有効ワークシート(*.xlsm)はそのままではセキュリティの関係でうまく動作しないため、ファイルのプロパティより以下のように「☑ 許可する」にチェックした上で解凍してください。
- ダウンロードしたマクロ有効ワークシートを開き、マクロを有効化する
- 「補正あり」シート上の適当なセルをダブルクリックすると、その右横にユーザーフォームが表示される
※「補正なし」シートの方も同様ですが、環境によってはユーザーフォームの表示位置が右下の方にずれることがあるようです。
- 主として Windows 10 Pro + Microsoft 365 Excel で開発&動作確認しているため、環境によっては動作しない可能性はあります
- WinAPIを使用している関係上、Windows以外(Mac版・Web版等)では動作しません
環境(特にマルチモニタ環境)によっては、画面の右の方で試すとユーザーフォームが左に寄って表示されてしまう不具合が発生する場合があります。
この場合、エクセルの「ファイル>オプション>設定>全般>ユーザー インターフェイスのオプション>複数ディスプレイを使用する場合」にて、
◉ 互換性に対応した最適化
の方にチェックを入れてからエクセルを起動し直すと改善されるかも知れません。
マルチモニタ環境ではモニタをまたいでエクセルのウィンドウをおいていたりすると境界部分で位置がずれてしまうなどの不具合が発生するかと思いますが、現状、自分では対処困難です。
うまいやり方があればご教示願います。
このページに貼り付けてあるソースコードは個人的に後で参照しやすいようにしてあるだけです。
また、最新版ではない可能性もありますのでご注意ください。
こちらのソースコードを参考にご自分で自由に利用・改変していただいて構いません(連絡も不要です)。
動作レポートや不具合等のご報告は歓迎します。
動作保証は一切ありません。ご利用の際には全て自己責任でお願いします。
不具合があったり、使用した結果等により万一何らかの損害を被ったりした場合でも、作者は一切関知いたしませんので、悪しからずご了承願います。