前回、ユーザーフォームを連結し、システムの画面遷移が作成できました。
この記事では、画面サイズの調整機能を追加していきます。
VBA在庫管理システムVer01
初期設定のサブルーチン化
初期設定をサブルーチン化します。サブルーチンとは、プロシージャを部品化することです。
VBEを開き、[挿入] – [標準モジュール] を選択します。
挿入された標準モジュールの名称を "設定" と変更し、下記のプロシージャを作成します。
Sub InitialSetting() ActiveWindow.WindowState = xlMinimized frmMainMenu.Show End Sub
WorkbookのWorkbook_Open プロシージャとHOMEシートのbtnOpen_ Clickプロシージャを、 Callステートメントで書き換えます。
Private Sub Workbook_Open() Call InitialSetting End Sub
Private Sub btnOpen_Click() Call InitialSetting End Sub
Callステートメントは、他のSubプロシージャやFunctionプロシージャなどを呼び出して制御を渡すフロー制御ステートメントです。Callは省略可能ですが、可読性等を考慮して明記するようにしましょう。
これで、初期設定は 標準モジュール:設定 で、編集可能になります。
フォームのサイズ調整
VBAのフォームは固定サイズのため、画面サイズが異なるとフォーム全体が表示されないというような問題があります。
そこで、画面サイズに合わせてフォームのサイズを調整する機能を追加していきます。
標準モジュール:設定 を開き、サイズ調整に必要な変数を設定していきます。
変数の宣言をする場所に、気を付けてください。
Option Explict Public 画面高さ As Long Public 高さ割合 As Double Sub InitialSetting() 'サイズ調整 ActiveWindow.WindowState = xlMaximized 画面高さ = Application.Height 高さ割合 = 0.9 ActiveWindow.WindowState = xlMinimized 'メニュー画面の表示 frmMainMenu.Show End Sub
変数の宣言は、モジュールの最上部のプロシージャの更に上の部分の、宣言セクションで Publicステートメント を使用しておこないます。
宣言された変数は、プロシージャ内で Dimステートメント で宣言されるプロシージャレベル変数に対して、モジュールレベル変数と言われ、プロジェクトエクスプローラーに表示される全てのモジュール内のプロシージャで使用できます。
コードは、一旦エクセルを最大表示にして、画面高さを取得します。
表示比率は画面高さに対する割合として設定していきます。初期値として "0.9" を設定しています。定数として宣言してもいいのですが、拡張性を持たすため、変数としています。
各ユーザーフォームのInitiarizeプロシージャに、Zoomプロパティを使用し、サイズ調整のコードを書きます。
Private Sub frmMainManu_Initiarize() 'サイズ調整 Me.Zoom = Me.Zoom * ((画面高さ * 高さ割合) / Me.Height) Me.Width = Me.Width * ((画面高さ * 高さ割合) / Me.Height) Me.Height = Me.Height * ((画面高さ * 高さ割合) / Me.Height) End Sub
サイズ調整が設定できたので、動作確認してみましょう。
このとき、初期設定の高さ割合を変更しながら、挙動を確認しましょう。
次回は、データベースを作成します。
www.minizaiko.com