【VBA】UserFormのサイズを画面に合わせて自動調整する方法|Width・Height・Zoom
Excel VBAでUserFormを使用していると、作成したパソコンでは問題なく表示されていても、別のパソコンで実行すると、
- UserFormが画面からはみ出す
- 逆にUserFormが小さく表示される
- TextBoxやCommandButtonが小さくて操作しづらい
といったことがあります。
これは、使用しているパソコンによって画面サイズや解像度が異なるためです。
今回は、Excel VBAのUserFormを画面サイズに合わせて自動調整する方法についてご紹介したいと思います。
UserFormのサイズを画面に合わせる方法
UserFormのサイズを自動調整する場合は、UserFormを開いたときに実行されるUserForm_Initializeイベントを使用します。
UserForm_Initializeでサイズを自動調整する
UserFormを起動したタイミングで、
- Excelを最大化する
- UserFormの高さをExcel画面に合わせる
- UserFormの横幅を調整する
- TextBoxやCommandButtonなどの表示倍率を変更する
という処理を行います。
サンプルコード
以下のコードを、サイズを変更したいUserFormのコード画面へ記述します。
Private Sub UserForm_Initialize()
'========================================
' Excelのウィンドウを最大化する
'========================================
Application.WindowState = xlMaximized
'========================================
' UserFormの高さをExcel画面に合わせる
'========================================
Me.Height = Application.Height
'========================================
' UserFormの横幅を高さの1.5倍に設定する
'========================================
Me.Width = Me.Height * 1.5
'========================================
' TextBoxやCommandButtonなどの
' コントロールの表示倍率を変更する
'========================================
Me.Zoom = 120
End Sub
このコードを実行すると、UserFormを開いたタイミングで画面サイズに合わせてフォームサイズが変更されます。

UserFormのサイズを調整するポイント
上記コードをそのまま使用しても動作しますが、使用している環境によってはUserFormの横幅やコントロールのサイズが合わない場合があります。
その場合は、次の値を調整してください。
フォームの高さを調整する
UserFormの高さは、次のコードで設定しています。
'Excel画面の高さに合わせてUserFormの高さを設定する
Me.Height = Application.Height
Application.Heightには、現在のExcelウィンドウの高さが格納されています。
そのため、Excelを最大化した状態でこの値を取得することで、UserFormの高さを画面サイズに合わせることができます。
フォームの横幅を調整する
UserFormの横幅は、次のコードで設定しています。
'UserFormの高さを基準に横幅を設定する
Me.Width = Me.Height * 1.5
この1.5が横幅の倍率です。
例えば、
- 横幅を狭くしたい場合 → 1.0
- さらに狭くしたい場合 → 0.8
- 横幅を広くしたい場合 → 1.8
など、環境に合わせて調整できます。
コントロールの表示倍率を調整する
UserFormのサイズを変更しても、TextBoxやCommandButtonなどのコントロールが自動的に最適なサイズになるとは限りません。
そこで、Zoomプロパティを使用します。
'UserForm内のコントロールを120%で表示する
Me.Zoom = 120
Zoom = 100で通常サイズ、
Zoom = 120で120%表示となります。
UserFormのサイズに合わせて調整してください。
コードの仕組み
ここからは、今回使用しているコードについて簡単に解説します。
Excelを最大化する
'Excelウィンドウを最大化する
Application.WindowState = xlMaximized
今回はExcelの表示サイズを基準としてUserFormのサイズを変更しています。
そのため、最初にExcelを最大化しています。
Application.Heightを取得する
'Excel画面の高さを取得してUserFormへ設定する
Me.Height = Application.Height
Application.Heightを使用すると、現在のExcelウィンドウの高さを取得できます。
この値をUserFormのHeightへ設定することで、画面サイズに合わせたUserFormを表示できます。
WidthとZoomを設定する
横幅はWidth、コントロールの表示倍率はZoomで設定します。
'UserFormの横幅を設定する
Me.Width = Me.Height * 1.5
'UserForm内のコントロールの表示倍率を設定する
Me.Zoom = 120
UserFormのデザインや利用するパソコンによって、最適な値は異なります。
環境によって調整する値
今回のサンプルコードで、特に調整する可能性が高いのは次の2つです。
横幅の倍率を変更する
Me.Width = Me.Height * 1.5
1.5の部分を変更します。
UserFormが横に広すぎる場合は数値を小さくし、狭すぎる場合は大きくしてください。
Zoomの倍率を変更する
Me.Zoom = 120
こちらも、TextBoxやCommandButtonが大きすぎる場合は値を小さくします。
例えば、
100
にすると通常サイズで表示されます。

UserFormを自動調整するときの注意点
今回の方法は、Excelウィンドウのサイズを基準にUserFormを調整する方法です。
そのため、すべてのパソコンで完全に同じ見た目になるとは限りません。
特に、
- ディスプレイ解像度
- Windowsの拡大率
- UserForm内のコントロール数
- UserFormの元のデザイン
によって、最適なWidthやZoomの値が変わる場合があります。
実際に使用する環境でUserFormを表示しながら、倍率を調整してください。
最後に
いかがでしたでしょうか。
今回は、Excel VBAでUserFormのサイズを画面に合わせて自動調整する方法についてご紹介しました。
Application.Height、Me.Width、Me.Zoomを組み合わせることで、利用するパソコンの画面サイズに合わせてUserFormを調整できます。
複数のパソコンで同じVBAツールを使用する場合などに、少しでも参考になれば幸いです。
開発依頼について
ココナラでWebスクレイピング開発サービスを出品しております。
自分で開発をしようと思ったけど、依頼したり、何か聞きたいことがあったりしたら
いつでもお気軽にご相談ください。
また、本ブログからご依頼いただいた方については割引特典がございますので、
ご不明点と合わせてメッセージをいただけると幸いです。
Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!
Webスクレイピング以外にもWebアプリの開発サービスも出品しております。
こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、
併せてご検討ください。
スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?


