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