- 「あぁ、もう!またフォームが入力したいセルを隠してる…」
- 「毎回マウスでフォームを横にずらすの、地味にストレスなんだよなぁ。勝手に右端に表示されてくれればいいのに。」
せっかく作ったユーザーフォーム。でも、いざ使ってみると、表示される場所がいつも真ん中で、肝心のシートの中身が見えない……なんてことはありませんか?
今回は、ユーザーフォームの表示位置を自由自在にコントロールする方法を分かりやすく解説します。
基本設定:「StartUpPosition」プロパティの活用
最も手軽な解決策は、フォームの設定(プロパティ)である「StartUpPosition」を変更することです。
設定値によって、以下のように表示位置を変更できます。
- 0 – 手動: 任意の位置を指定する場合に使用します(後述のTop・Leftプロパティを併用)。
- 1 – オーナー フォームの中央: 親ウィンドウの中央に表示します。
- 2 – 画面の中央: パソコン画面の中央に表示します(初期設定)。
- 3 – Windows の既定値:画面の左上に表示されます。
「とりあえず左上に置きたい!」という時は、設定を「3」に変えるだけでOKです。
細かく指定する:「Top」と「Left」プロパティ
「画面の右端にぴたっと合わせたい」といった、細かな配置を行う場合は、Top(上端からの距離)およびLeft(左端からの距離)プロパティを使用します。
以下のコードをコピーして、フォームのコードウィンドウに貼り付けてみてください。
Private Sub UserForm_Initialize()
' 1. 手動で位置調整
Me.StartUpPosition = 0
' 2. 上からの位置を指定(単位はポイント)
' 数字を大きくすると下に下がります
Me.Top = 100
' 3. 左からの位置を指定
' 数字を大きくすると右に動きます
Me.Left = 300
End Sub
位置指定における注意点
位置調整の際によくあるトラブルとして、「指定したはずのフォームが表示されない」というケースがあります。
例えば、「Me.Left = 2000」などの大きな数値を設定すると、フォームがディスプレイの表示領域外に配置されてしまうことがあります。最初は小さな数値から設定し、徐々に調整することをおすすめします。
応用編:Excelウィンドウの右上に自動配置する
Excel自体のウィンドウサイズを変更しても、常にウィンドウ内の右上にフォームを表示させたい場合は、Applicationオブジェクトのサイズを取得して計算します。
Private Sub UserForm_Initialize()
Me.StartUpPosition = 0
' エクセルの左端からの距離 + エクセルの幅 - フォームの幅
' これで「常にエクセル画面の右上」に表示されます
Me.Left = Application.Left + Application.Width - Me.Width
Me.Top = Application.Top
End Sub
ユーザーフォームの表示位置を最適化するだけで、私たちのツールの操作性は大幅に向上します!
まずはコードをコピペして数値の調整から試してみてください。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント