前回、システムの棚卸機能を作成しました。
この記事では、メニュー画面にサイズ調整機能を追加していきます。
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