エクセルVBA インボイス見積納品請求伝票日付版です。
利用者の利便を考えてユーザーフォームを設置します。
コントロールの数が多くなりますので、着実に行っていきましょう。
こんにちは、じゅんぱ店長(@junpa33)です。
今回は、インボイス見積納品請求伝票日付版を操作するユーザーフォーム「操作パネル」を作成します。
「見納請3点伝票作成ソフト」で作成したユーザーフォームに機能追加しバージョンを上げることで仕上げています。
参考としてこちらの記事もご覧いただけます。

インボイス見積納品請求3点伝票作成の記事編成
- インボイス見積納品請求3点伝票作成ソフトの使い方とダウンロード
- インボイス見積納品請求伝票日付版作成ソフトの使い方とダウンロード
コンテンツ
作成するユーザーフォームのビジュアル

今回作成するのは以下のようなユーザーフォームになります。


ユーザーフォームへのコントロールの配置

ユーザーからの入力部分となる各パーツを組み込んでいきます。順番に1つづつ作成していきましょう。
まず、ユーザーフォームのベースを作成
VBE(ビジュアルベーシックエディタ)の「挿入」から「ユーザーフォーム」を選択クリックする所からはじめます。
詳しくはこちらを参考にしてください。↓

各コントロールを配置
ユーザーからの入力部分はコントロールと言いますが、「ツールボックス」というダイアログから選んで設置していきます。
ユーザーフォームの頭のタイトル名「インボイス見積書納品書請求書3点伝票作成コントロール」はラベルで作成します。
ツールボックスの「ラベル」を選択してユーザーフォーム上の適切な位置を指定します。

詳しくはこちらを参考にしてください。↓

電子印鑑の「押印する」チェックマークは、チェックボックスで作成します。
ツールボックスの「チェックボックス」を選択してユーザーフォーム上の適切な位置を指定します。

詳しくはこちらを参考にしてください。↓
「テンプレ作成」ボタンは、コマンドボタンで作成します。
ツールボックスの「コマンドボタン」を選択してユーザーフォーム上の適切な位置を指定します。

詳しくはこちらを参考にしてください。↓

「顧客番号」入力ボックスは、テキストボックスで作成します。
ツールボックスの「テキストボックス」を選択してユーザーフォーム上の適切な位置を指定します。

詳しくはこちらを参考にしてください。↓

「小数点以下計算ルール」枠は、フレームで作成します。
ツールボックスの「フレーム」を選択してユーザーフォーム上の適切な位置を指定します。

詳しくはこちらを参考にしてください。↓
「小数点以下計算ルール」ボタンは、オプションボタンで作成します。
ツールボックスの「オプションボタン」を選択してユーザーフォーム上の適切な位置を指定します。

詳しくはこちらを参考にしてください。↓
「フォントの選択」プルダウンメニューは、コンボボックスで作成します。
ツールボックスの「コンボボックス」を選択してユーザーフォーム上の適切な位置を指定します。

詳しくはこちらを参考にしてください。↓
コントロールのプロパティ設定

配置した各コントロールは「オブジェクト名」や「Caption(表示名)」などを個別に設定する必要があります。
今回は、ラベル、フレームについては設定を行いません。
設定の最後に「タブオーダー」も整えておきます。
ユーザーフォームModuleへのVBA記述

各コントロールのイベント動作を規定するVBAコードを、ユーザーフォームModuleに記述します。
それぞれがプロシージャー単位で、1つづつ分かれています。
Option Explicit
'「テンプレ作成」ボタン
Private Sub テンプレ作成する_Click()
MRK = 1
Call Module1.テンプレ作成2
End Sub
'「データ連携」ボタン
Private Sub データ連携する_Click()
If CheckBox1 = False Then Exit Sub
Call Module6.データ転記
End Sub
'「フォントの選択」コンボボックス
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "MS Pゴシック"
.AddItem "MS P明朝"
.AddItem "メイリオ"
.AddItem "游ゴシック"
.AddItem ""
End With
End Sub
'「帳票作成」ボタン
Private Sub 伝票作成する_Click()
Dim ms As Long
If インボイス3点操作パネル.顧客番号.Value = "" Then
ms = MsgBox("顧客番号が入力されていません。" & vbCrLf & _
"このまま続けますか?", vbYesNo + vbQuestion, _
"インボイス見積納品請求3点日付版作成")
End If
If ms = vbNo Then
Exit Sub
ElseIf ms = vbYes Then
MRK = 2
Call Module5.テンプレ作成1
Else
MRK = 3
Call Module5.テンプレ作成1
End If
End Sub
'「帳票印刷」ボタン
Private Sub 帳票印刷する_Click()
Call Module3.印刷設定
End Sub
'「帳票保存」ボタン
Private Sub 伝票保存する_Click()
Call Module4.伝票保存
End Sub
'「シートクリア(初期化)」ボタン
Private Sub シートクリアする_Click()
MRK = 0
Call Module5.Clearする
End Sub
ブックModuleとシートModuleへのVBAコード記述

ユーザーフォームを作成した時は、
そのユーザーフォームを表示させるためのコードを ” どこかに ” 記述しておかないといけません。
一般的に多いのは、次のようなイベントが発生したときに表示実行されるパターンです。
- エクセルブックを開くと同時に表示する
- 特定のあるシートを開くと表示される
- シートに開閉のボタンを設置する
今回は①と②のイベント発生時に表示されるようにコード記述をします。
Private Sub Workbook_Open()
インボイス3点操作パネル.Show vbModeless
End Sub
Private Sub Worksheet_Activate()
If インボイス3点操作パネル.Visible = False Then
インボイス3点操作パネル.Show vbModeless
End If
End Sub
どのシートモジュールにコードを記述するかは、決まりごとはありません。自由にシートを選べますし、複数シートに記述しても大丈夫です。
ユーザーフォームの設置のまとめ

エクセルVBAで作るソフトで、ユーザーフォームは、UI(ユーザーインターフェース)として度々登場します。
回を重ねてユーザーフォームを作っていると、数多いコントロールも自然と、配置方法と使い方を覚えてしまうでしょう。
慣れ優先で取り組んでみてください。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。