【Excel VBA】ユーザーフォームが邪魔な問題を解決!表示位置を自由自在にコントロールする方法

【業務効率化】VBA
スポンサーリンク

  • 「あぁ、もう!またフォームが入力したいセルを隠してる…」
  • 「毎回マウスでフォームを横にずらすの、地味にストレスなんだよなぁ。勝手に右端に表示されてくれればいいのに。」

せっかく作ったユーザーフォーム。でも、いざ使ってみると、表示される場所がいつも真ん中で、肝心のシートの中身が見えない……なんてことはありませんか? 

今回は、ユーザーフォームの表示位置を自由自在にコントロールする方法を分かりやすく解説します。

【業務効率化】VBAの記事を見る

基本設定:「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の記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました