【VBA】ユーザーフォームの表示位置を指定する方法 (中央/手動)

目次

はじめに

VBAで作成したユーザーフォームは、デフォルト設定のままだと、意図しない場所に表示されてしまうことがあります。ツールの操作性を向上させるためには、フォームを常に画面の中央や、Excelウィンドウの近くなど、分かりやすい位置に表示させることが重要です。

VBAでは、ユーザーフォームの StartUpPosition プロパティを変更することで、フォームの初期表示位置を簡単にコントロールできます。この記事では、StartUpPosition の各設定と、ピクセル単位で表示位置を精密に指定する方法を分かりやすく解説します。


StartUpPosition プロパティによる自動設定

StartUpPosition プロパティは、フォームがどこに表示されるかを決める最も簡単な方法です。この設定は、ユーザーフォームのプロパティウィンドウで変更することも、VBAコードで直接指定することもできます。

設定値定数説明
0vbStartUpManual手動.Top.Left プロパティで表示位置を自分で指定します。(後述)
1vbStartUpOwnerオーナーの中央。Excelウィンドウ(親フォーム)の中央に表示されます。(デフォルト)
2vbStartUpScreen画面の中央。PCモニターの画面全体の中心に表示されます。
3vbStartUpWindowsDefaultWindowsの規定値。Windowsが決定した位置に表示されます。

Google スプレッドシートにエクスポート

サンプルコード

以下のマクロは、MainForm という名前のユーザーフォームを、それぞれの StartUpPosition 設定で表示します。

' --- 1. Excelウィンドウの中央に表示 ---
Sub ShowFormAtCenterOwner()
    With MainForm
        .StartUpPosition = 1 ' オーナーの中央 (vbStartUpOwner)
        .Show
    End With
End Sub

' --- 2. 画面全体の中心に表示 ---
Sub ShowFormAtCenterScreen()
    With MainForm
        .StartUpPosition = 2 ' 画面の中央 (vbStartUpScreen)
        .Show
    End With
End Sub

通常は、画面全体の中心に表示される 2 (vbStartUpScreen) が、利用者にとって最も分かりやすく、おすすめです。


StartUpPosition = 0 で表示位置を手動設定する

StartUpPosition0 (vbStartUpManual) に設定すると、フォームの .Top (上からの位置) と .Left (左からの位置) プロパティを使って、表示位置をピクセル単位で自由に決めることができます。

サンプルコード

以下のマクロは、MainForm をExcelウィンドウの左上から少し離れた位置(上へ100ピクセル, 左へ200ピクセル)に表示します。

' フォームの表示位置を手動で指定する
Sub ShowFormAtManualPosition()

    With MainForm
        ' まず、手動設定モードにする
        .StartUpPosition = 0 ' 手動 (vbStartUpManual)
        
        ' 表示位置をピクセルで指定
        .Top = Application.Top + 100  ' Excelウィンドウの上端から100ピクセル下
        .Left = Application.Left + 200 ' Excelウィンドウの左端から200ピクセル右
        
        ' フォームを表示
        .Show
    End With

End Sub

コードの解説

  • .Top = Application.Top + 100: フォームの上端の位置(.Top)を、Excelアプリケーション自体のウィンドウの上端位置(Application.Top)を基準に、100 ピクセル下に設定しています。
  • .Left = Application.Left + 200: 同様に、フォームの左端の位置(.Left)を、Excelウィンドウの左端位置(Application.Left)から 200 ピクセル右に設定しています。

この方法を使えば、マルチモニター環境でも、意図したモニターのExcelウィンドウの近くにフォームを表示させることができます。


まとめ

今回は、ユーザーフォームの表示位置をコントロールするための方法をご紹介しました。

  • StartUpPosition プロパティを使うのが基本。特に 2 (画面中央) が便利。
  • 自由な位置に表示したい場合は、StartUpPosition0 (手動) に設定し、.Top.Left プロパティで座標を指定する。

フォームの表示位置は、ツールの使いやすさに直結する重要な要素です。ユーザーが直感的に操作できるよう、ぜひこのテクニックを活用して、最適な位置にフォームを表示させてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次