ous">

小さな在庫管理

在庫管理導入からシステム作成まで詳細解説!

ユーザーフォームのサイズ調整 [VBA在庫管理システムVer01#03]

前回、ユーザーフォームを連結し、システムの画面遷移が作成できました。

この記事では、画面サイズの調整機能を追加していきます。


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