【VBA】VBAのフォームサイズを画面に合わせる方法

こんにちは。
VBAでツールを作成する際、フォームを使用することがよくあるかと思います。

今回はVBAのフォームを使うときに便利な「画面サイズに合わせてフォームサイズを自動調整する方法」についてまとめてみました。

ユーザーが使っている画面サイズが違っても、フォームがちょうどいい大きさで表示されると使いやすくなるかと思います。
ぜひマスターして快適なVBAフォーム作りに役立ててください。

VBAに関する過去の記事

VBAに関する小ワザやテクニックなどの参考記事については、過去にご紹介しておりますのでそちらもどうぞ。

なぜフォームサイズを画面に合わせるのか?

パソコンのディスプレイサイズや解像度は人それぞれ。
もしフォームが固定サイズだと、小さい画面でははみ出したり、大きい画面だとスカスカに見えたり…見栄えも操作性もイマイチになります。

だから、起動した画面サイズを取得して、フォームのサイズを自動で調整するのがポイントになってきます。

(そして何より、VBEにはUI解像度によってサイズ調整してくれる機能がない。。。)

フォームサイズを調整する

まずは以下のコードを使用します。
使用する対象は、サイズを変更したいユーザーフォームのコードになります。

Private Sub UserForm_Initialize()

Application.WindowState = xlMaximized

Me.Height = Application.Height
Me.Width = Me.Height * 1.5

Me.Zoom = 120

End Sub

環境に合わせてソースコードを変更する

貼り付けができたら、環境に合わせて変更する箇所を解説します。ソースコードは後ほど解説します。

まずは、この状態でフォームを実行してみます。

こんな感じになりました。

ご覧になっても明らかですが、フォームが大きくなっています。
そして、この状態では、高さも横幅もアンバランスです。
テキストボックスやボタンのサイズも、もう少し大きくてもいいかもしれません。

したがって、この2つを調整するために、先ほどコピペしたコードを2箇所変更します。

 調整が必要な部分

以下の2点を調整します。

  • フォームの横幅
  • テキストボックスやボタンなど、コントロールのサイズ

フォームの横幅を調整する

Me.Width = Me.Height * 1.5

こちらのコードの、1.5の部分を変更します。

※今回はサンプルで0.5に設定しました。

数値の変更による影響は以下の通りです。

  • 数値を1.5よりも大きくする → 横幅が広がる
  • 数値を1.5よりも小さくする → 横幅が狭まる

テキストボックスやボタンなど、コントロールのサイズを調整する

Me.Zoom = 120

こちらのコードの、120の部分を変更します。

※今回はサンプルで100に設定しました。

数値の変更による影響は以下の通りです。

  • 数値を120より大きくする → コントロールのサイズが大きくなる
  • 数値を120より小さくする → コントロールのサイズが小さくなる
  • 数値を100にした場合、最初に作成したサイズと等倍になります。

この2つの設定を、画面のサイズに合わせて調整すると、下の図のようにフォームを全画面に広げられました。

ソースコードの解説

ざっくりですがフォームのサイズ変更について解説しました。

次からはソースコードについて解説します。

Excelを全画面表示にする

Application.WindowState = xlMaximized

このマクロは、アプリケーション(Excel)の表示サイズを基準にして、フォームサイズを変更します。
なので、フォームサイズを画面のサイズに合わせるために、最初にExcelを全画面表示にする必要があります。

フォームの高さと幅を決める

Me.Height = Application.Height
Me.Width = Me.Height * 1.5

高さは画面サイズに合わせています。幅は、高さを基準にした倍率で合わせます。

今回は高さの調整については触れていませんが、高さを変更したい場合はMe.Heightの値を変更すればよいということになります。

コントロールの表示倍率を変更する

Me.Zoom = 120

フォームのサイズとコントロール(テキストボックスやボタン)は連動してサイズ変更してくれません。

そのため、新たなフォームサイズに合わせて、コントロールのサイズも調整する必要があります。

最後に

いかがでしたでしょうか。

PCやタブレットなどVBAフォームを様々な解像度のディスプレイに対応させる際は、

考慮する点が多く苦労することも多くなるかと思います。

とても単純で簡単なのですが、意外とふとした時に忘れがちです。

ですので、しっかりマスターして基本を抑えながらと実装できると業務効率も格段に向上するかと思います。

そのきっかけとして、少しでも参考になればと思います。

開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、依頼したり、何か聞きたいことがあったりしたら

いつでもお気軽にご相談ください。

また、本ブログからご依頼いただいた方については割引特典がございますので、

ご不明点と合わせてメッセージをいただけると幸いです。

Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!

Webスクレイピング以外にもWebアプリの開発サービスも出品しております。

こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、

併せてご検討ください。

スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA