【VBAリファレンス|実務向け】Excel VBAでウィンドウサイズを固定する(EnableResizeプロパティ)|実務で役立つ画面制御の基本

スポンサーリンク

1. 導入:なぜウィンドウサイズを固定するのか?

実務でExcelツールを作成する際、ユーザーに意図した通りのレイアウトで画面を見てほしい場面は多々あります。例えば、操作ボタンを配置した専用のダッシュボード画面や、入力支援用のユーザーフォーム風のシートなどが挙げられます。

ウィンドウが勝手に拡大・縮小されると、ボタンの位置がずれたり、必要な入力欄が隠れてしまったりして、ユーザーの操作ミスを招く原因になります。EnableResizeプロパティを活用することで、ウィンドウサイズを強制的に固定し、ツールとしての「操作の安定感」を向上させることができます。

2. 基礎知識:EnableResizeとWindowStateの関係

WindowオブジェクトのEnableResizeプロパティは、ウィンドウのサイズ変更を許可するかどうかを制御するプロパティです。

重要なポイントは、このプロパティが「WindowStateプロパティが『xlNormal(標準サイズ)』の状態である時のみ有効」という仕様であることです。最大化や最小化の状態ではサイズ変更の概念自体が異なるため、このプロパティを適用する前に、必ずウィンドウを標準サイズに戻す処理が必要となります。

3. 実装/解決策:サイズ固定の手順

以下の手順で実装を行うのが最も確実です。
1. 対象となるウィンドウを「標準サイズ(xlNormal)」に切り替える。
2. ウィンドウの幅(Width)と高さ(Height)を希望のサイズに設定する。
3. EnableResizeをFalseに設定して、ユーザーによる変更を禁止する。

注意点として、この設定は「ブックを閉じるとリセットされる」という性質があります。そのため、ブックを開くたびに自動的に再設定されるよう、Workbook_Openイベントに記述しておくのが実務上のベストプラクティスです。

4. サンプルプログラム:ウィンドウサイズ固定の実装

以下のコードを標準モジュール、またはThisWorkbookモジュールに記述して動作を確認してください。

Sub FixWindowSize()
‘ アクティブなウィンドウを操作対象とする
With ActiveWindow
‘ 1. 必ず標準サイズ(xlNormal)に設定する(必須手順)
.WindowState = xlNormal

‘ 2. 希望のサイズに調整する(単位はポイント)
.Width = 400
.Height = 300

‘ 3. サイズ変更を不可にする(Falseで固定、Trueで許可)
.EnableResize = False
End With

MsgBox “ウィンドウサイズを固定しました。”
End Sub

5. 応用・注意点:現場での運用アドバイス

●「解除」を忘れずに
開発中やテスト中にこのコードを走らせると、自分でウィンドウサイズを変えられなくなり、デバッグがしにくくなることがあります。開発中はEnableResizeをTrueにするか、手動で最大化することで一時的に解除可能です。

●マルチモニター環境への配慮
ユーザーの環境によっては、ディスプレイの解像度が異なります。極端に小さいサイズで固定してしまうと、特定の環境では操作不能になるリスクがあります。実務では、固定サイズを指定する際に、ユーザーの画面解像度に合わせて動的に計算するか、余裕を持ったサイズ設定を心がけましょう。

●設定は「起動時」に
前述の通り、この設定は揮発性です。ツールを配布する際は、必ずThisWorkbookモジュールのWorkbook_Openイベントにこの処理を組み込み、ブックを開いた瞬間に自動で適用されるように設計してください。

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