前回は、エクセルブックを準備し、ユーザーフォームを作成しました。
この記事では、エクセルブックと各ユーザーフォームを連結し、システムの画面遷移を作成していきます。
VBA在庫管理システムVer01
フォームの連結
各フォームを連結していきます。
プログラムブックとメニュー画面の連結
プログラムブックにHOMEシートを作成し、ボタンを設置します。
ボタンは、フォームコントロールとActive Xコントロールの2種類ありますが、VBAでの制御に適している、ActiveXコントロールを使用していきます。
デザインモードを選択し、ボタンをダブルクリックします。
VBEが立ち上がり、プロシージャが表示されます。
プロパティウィンドウでボタンのプロパティを修正します。
オブジェクトボックスで btnOpenを、プロシージャボックスで Click を選択します。選択すると、btnOpen_Ckick のプロシージャが生成されます。(CommandButton1_Click 等の必要の無いプロシージャは削除しましょう。)
プロシージャの中に、下記のコードを書きます。エクセルブックを最小化し、メニュー画面を表示させるコードです。
Private Sub btnOpen_Click() ActiveWindow.WindowState = xlMinimized frmMainMenu.Show End Sub
※VBAのコードは、なるべくコピペせずに直打ちしましょう。VBEの自動メンバー表示機能(インテリセンス)に慣れると、入力が早く・正確になりますので使用していきましょう。
例えば、frmまで打ったら、[Ctrl] + [Space] を押してみてください。入力可能なメンバー候補が表示されるので、[↑] ・ [↓] キーで選択し、[Tab] キーで確定できます。
VBEでfrmMainMenuを選択し、閉じるボタンをダブルクリックします。
先程と同様にプロシージャが表示されるので、中にコードを書きます。エクセルブックを最大化し、メニュー画面を閉じるコードです。
Private Sub btnClose_Click() ActiveWindow.WindowState = xlMaximized Unload Me End Sub
エクセルシートを表示させ、動作確認してみましょう。ボタンがデザインモードになっているときは、クリックしても動作しないので解除してください。
メニュー画面と各画面の連結
メニュー画面に各フォームへのボタンを作成します。
※VBA実行時のメニュー画面
各ボタンをダブルクリックし、コードを書きます。
Private Sub btnItemMaster_Click() frmItemMaster.Show Unload Me End Sub
Private Sub btnItemInput_Click() frmItemInput.Show Unload Me End Sub
Private Sub btnItemStock_Click() frmItemStock.Show Unload Me End Sub
Private Sub btnItemOutput_Click() frmItemOutput.Show Unload Me End Sub
各画面の閉じるボタンにメニューに戻るコードを書きます。
Private Sub btnClose_Click() frmMainMenu.Show Unload Me End Sub
メニュー画面を表示させ、動作確認してみましょう。
ブック立ち上げ時の設定
ブックを開いた時にフォームが立ち上がるように、ブックオブジェクトに初期設定のコードを書きます。
VBEを立ち上げ、ブックモジュールを選択します。オブジェクトボックスで WorkBookを、プロシージャボックスで Open を選択します。選択すると、Workbook_Open のプロシージャが生成されます。
プロシージャの中に、下記のコードを書きます。エクセルブックを最小化し、メニュー画面を表示させるコードです。HOMEシートのOpenボタンと同じコードです。
Private Sub Workbook_Open() ActiveWindow.WindowState = xlMinimized frmMainMenu.Show End Sub
一旦、ブックを立ち下げ、ブックを開いて動作確認してみましょう。
ブック立ち下げ時の設定
プログラムブックのHOMEシートに、ボタンをもう一つ設置します。
デザインモードを選択し、ボタンをダブルクリックします。
VBEが立ち上がり、プロシージャが表示されます。
プロパティウィンドウでボタンのプロパティを修正します。
オブジェクトボックスで btnClose を、プロシージャボックスで Click を選択します。選択すると、btnClose_Ckick のプロシージャが生成されます。(CommandButton1_Click 等の必要の無いプロシージャは削除しましょう。)
プロシージャの中に、下記のコードを書きます。エクセルブックを保存し、終了させるコードです。
Private Sub btnClose_Click() ActiveWorkbook.Saved = True Application.Quit End Sub
エクセルシートを表示させ、動作確認してみましょう。ボタンがデザインモードになっているときは、クリックしても動作しないので解除してください
これで、ユーザーフォームが連結できました。
次回は、ユーザーフォームにサイズ調整機能を追加していきます。
www.minizaiko.com