ous">

小さな在庫管理

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

メニュー画面のサイズ調整機能作成 [VBA在庫管理システムVer01#34]

前回、システムの棚卸機能を作成しました。

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


VBA在庫管理システムVer01

フォームのサイズ調整

このシステムの各画面は、ディスプレイの表示高さの90%の割合で表示されるように初期設定してあります。

標準モジュール 設定のコードには、高さ割合に初期値として0.9を設定しています

Option Explict

Public 画面高さ As Long
Public 高さ割合 As Double

Sub InitialSetting()

'サイズ調整
ActiveWindow.WindowState = xlMaximized

画面高さ = Application.Height
高さ割合 = 0.9

ActiveWindow.WindowState = xlMinimized

'データ位置の設定
データ位置 = "C:¥Users¥***¥Desktop¥在庫管理¥"

'メニュー画面の表示
frmMainMenu.Show

End Sub

また、各ユーザーフォームのInitiarizeプロシージャに、Zoomプロパティを使用し、サイズ調整のコードを入れてあります。

Private Sub frm※※※※※_Initiarize()

'----サイズ調整---------------------------------------------------------------
    Me.Zoom = Me.Zoom * ((画面高さ * 高さ割合) / Me.Height)
    Me.Width = Me.Width * ((画面高さ * 高さ割合) / Me.Height)
    Me.Height = Me.Height * ((画面高さ * 高さ割合) / Me.Height)
'-----------------------------------------------------------------------------

~~~~~~~~~~~~~~~

End Sub

パブリック変数の高さ割合に、任意の割合を入力できるようにして、画面の表示サイズをユーザーが設定できるようにしていきます。
 

サイズ調整機能の追加

画面作成

メニュー画面にサイズ調整用のコントロールを追加します。

ツールボックスでラベル・テキストボックス・スピンボタンを選択し、frmMenuのヘッダー内でドラッグして追加し、書式設定を利用しながら、見た目を整えます。

各オブジェクトの配置は、横配置は配置図を参考に、縦配置はlblHeaderを基準に上下中央合わせし設定します。

※オブジェクトの配置図

各オブジェクトのプロパティは、枠線を無し(0 - fmBorderStyleNone)に、背景色を透明(0 – fmBackStyleTransparent)に設定します。

※プロパティ設定後のユーザーフォーム

 

サイズ調整

初期値として、テキストボックスに変数 高さ割合を表示させます。

Private Sub UserForm_Initialize()

'----サイズ調整---------------------------------------------------------
Me.Zoom = Me.Zoom * ((画面高さ * 高さ割合) / Me.Height)
Me.Width = Me.Width * ((画面高さ * 高さ割合) / Me.Height)
Me.Height = Me.Height * ((画面高さ * 高さ割合) / Me.Height)
'-----------------------------------------------------------------------

'高さ割合の表示
texSize.Value = Format(高さ割合, "0.00")

End Sub

スピンボタンで、表示された高さ割合を変動させます。
変動動作は、変動幅を0.05とし、1.00〜0.70までの範囲とします。

Private Sub spnSize_SpinDown()

If texSize.Value <= 0.7 Then
    texSize.Value = Format(0.7, "0.00")
Else
    texSize.Value = Format(texSize.Value - 0.05, "0.00")
End If

End Sub
Private Sub spnSize_SpinUp()

If texSize.Value >= 1 Then
    texSize.Value = Format(1, "0.00")
Else
    texSize.Value = Format(texSize.Value + 0.05, "0.00")
End If

End Sub

ラベルのクリックで、サイズ調整を実行させます。

Private Sub lblSize_Click()

'変数の取り込み
高さ割合 = texSize.Value

'メニュー画面の再表示
Unload Me
frmMainMenu.Show

End Sub

 

調整範囲

通常では、サイズ調整は、若干のオブジェクトずれ程度で拡大・縮小されます。
サイズ感が分かる様に、背景に全画面表示したエクセルシートをおいています。

※VBA実行時のユーザーフォーム 90%

※VBA実行時のユーザーフォーム 70%

PCの環境によっては、サイズ調整により、画面崩れが発生する場合がありますので注意が必要です。使用環境で動作確認し、微調整が必要となる場合があります。

※VBA実行時のユーザーフォーム 70%

画面端部のズレなどは、オブジェクトサイズを微調整すれば解消する場合がありますが、オブジェクト内のキャプションの文字ズレが発生した場合は、修正は難しくなります。
対応としては、サイズの調整範囲を文字ズレが許容できそうな範囲に変更するか、サイズ調整機能自体を停止するか、といったところです。
また、ユーザーフォームの初期サイズやワイド画面への対応を工夫するといいかもしれません。

 

メニュー画面のサイズ調整機能ができました。
次回は、システムの配布用にメニュー画面に追加機能を作成し、システムを完成させます。
www.minizaiko.com