MS Access Tips/Sample and VBA and Blog customize etc...

タイトルバー以外をドラッグしてユーザーフォームを移動させる

前回の記事で、Accessのフォームをドラッグする方法を紹介しましたが、同じ方法でExcelやWordのユーザーフォームを動かせるのでは、と思って試してみました。

Accessのフォームとは勝手がちょっと違いましたが、実現できましたので紹介します。

ドラッグできるユーザーフォーム

難易度:

hWndプロパティ

VBAウィンドウでユーザーフォームを挿入して、タイトルバー以外をドラッグしてアプリを移動させる方法について と同じコードを入力したら、.hWnd が見つからないと怒られました。

ユーザーフォームでは自分でhWndを実装する必要があるようです。下記を参考にhWndプロパティを追加しました。

akihitoyamashiro.com/VBA/GetFormHwnd.htm

ユーザーフォームの仕様

タイトルバー以外をドラッグしてフォームを移動させる - hatena chips

では、ボタンを押していない時は MouseMoveイベントを無効にしましたが、ユーザーフォームでは無効にする方法は見つかりませんでした。もし、方法を御存知の方が見えましたらコメントください。

2014/07/08 追記: マウスボタン移動時ではなくマウスボタンクリック時に設定してもOKのようです。こちらの方がイベント発生が少ないのでいいように思います。上記のコードの MouseMove を MouseDown に変更するだけです。

今回、初めてユーザーフォームを使いましたが、かなりAccessのフォームとは違いますね。ダイアログフォーム形式が既定で、それ以外の表示(サイズ変更できるようにしたり、最大化/最小化ボタンを追加など)は、APIを使う必要があるようですね。

まあ、シード自体がAccessのフォームの機能をほとんど内包しているのでそのような仕様になっているのでしょうね。

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/418-b4488f62
該当の記事は見つかりませんでした。