Excel VBA:ユーザーフォームを開く時、位置を指定するコード

Excel VBAでユーザーフォームを開く時、LEFTとTOPプロパティで位置を指定するコードです。




Homeに戻る > Excel フォームのTipsへ

ユーザーフォームの位置は、StartUpPositionプロパティで下記の設定が可能です。

  • 0 - 手動
  • 1 - オーナーフォームの中央
  • 2 - 画面の中央
  • 3 - Windowsの既定値

VBAで指定した位置に配置したい場合は、「0 - 手動」にセットします。

ユーザーフォームの位置を指定するには、LEFTとTOPプロパティを使います。

LEFTプロパティはフォームの左位置、TOPプロパティはフォームの上位置です。

位置の基準はExcel画面でなく、Windows画面(デスクトップ)が基準になります。

LEFTとTOPプロパティの構文

  • ユーザーフォーム名.Left = 左座標
  • ユーザーフォーム名.Top = 上座標

自身のフォームから指定する場合は、Meキーワードを使用することが可能です。

  • Me.Left = 左座標
  • Me.Top = 上座標

ここでは、ユーザーフォームが開く直前に実行する、Initializeイベント内で位置指定のVBAを実行します。

応用例としては、ユーザーフォームが閉じる直前に左上位置を保存し、次回開く時にその値をセットします。

これにより前回と同じ位置で開くので、操作者は違和感なく、操作し易い位置で常に使用できるようになります。

関連する記事として「Excel:ユーザーフォームの作成方法 - コントロールの挿入方法」を掲載していますので参照してください。



ユーザーフォームを開く時、Excel VBAで左上位置を指定する

StartUpPositionプロパティの設定

Excelユーザーフォームの「StartUpPosition プロパティ」を「0-手動」にします。

StartUpPositionプロパティの設定画面

ユーザーフォームのVBAコード

ユーザーフォームが開く直前に実行する、Initializeイベント内に記述します。

Private Sub UserForm_Initialize()
    'フォームの左位置
    UserForm1.Left = 50
    'フォームの上位置
    UserForm1.Top = 10
End Sub

ユーザーフォームを開いた画面

下画像はExcelからユーザーフォームを開いた画面で、Excel画面がユーザーフォームの下にあります。

左位置50、上位置10の座標を指定しています。

この画像により呼び出したExcel画面ではなく、Windows画面(デスクトップ)が基準になっていることが分かります。

ユーザーフォームを開いた画面

Homeに戻る > Excel フォームのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved