ユーザーフォームの設置で操作性を上げる 3点伝票日付版

invoice3tenuserfeyecatch

エクセルVBA インボイス見積納品請求伝票日付版です。
利用者の利便を考えてユーザーフォームを設置します。
コントロールの数が多くなりますので、着実に行っていきましょう。

こんにちは、じゅんぱ店長(@junpa33)です。

今回は、インボイス見積納品請求伝票日付版を操作するユーザーフォーム「操作パネル」を作成します。

「見納請3点伝票作成ソフト」で作成したユーザーフォームに機能追加しバージョンを上げることで仕上げています。

参考としてこちらの記事もご覧いただけます。

3tendenusereyecatch 実用に耐えるユーザーフォーム作成のコツは具体的実例を教科書に

インボイス見積納品請求3点伝票作成の記事編成

作成するユーザーフォームのビジュアル

invoice3tenuserfp31

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

invoice3tenuserfp01
invoice3tenuserfp02

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

invoice3tenuserfp32

ユーザーからの入力部分となる各パーツを組み込んでいきます。順番に1つづつ作成していきましょう。

まず、ユーザーフォームのベースを作成

VBE(ビジュアルベーシックエディタ)の「挿入」から「ユーザーフォーム」を選択クリックする所からはじめます。

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

userformeyecatch ユーザーフォームの挿入と表示は簡単 エクセルVBA

各コントロールを配置

ユーザーからの入力部分はコントロールと言いますが、「ツールボックス」というダイアログから選んで設置していきます。

ラベルを配置する

ユーザーフォームの頭のタイトル名「インボイス見積書納品書請求書3点伝票作成コントロール」はラベルで作成します。

ツールボックスの「ラベル」を選択してユーザーフォーム上の適切な位置を指定します。

invoice3tenuserfp03

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

userformlabeleyecatch ラベルをユーザーフォームに設置する

チェックボックスを配置する

電子印鑑の「押印する」チェックマークは、チェックボックスで作成します。

ツールボックスの「チェックボックス」を選択してユーザーフォーム上の適切な位置を指定します。

invoice3tenuserfp04

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

コマンドボタンを配置する

「テンプレ作成」ボタンは、コマンドボタンで作成します。

ツールボックスの「コマンドボタン」を選択してユーザーフォーム上の適切な位置を指定します。

invoice3tenuserfp05

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

userformcommdeyecatch コマンドボタンをユーザーフォームに設置する

テキストボックスを配置する

「顧客番号」入力ボックスは、テキストボックスで作成します。

ツールボックスの「テキストボックス」を選択してユーザーフォーム上の適切な位置を指定します。

invoice3tenuserfp06

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

userformtexteyecatch テキストボックスをユーザーフォームに設置する

フレームを配置する

「小数点以下計算ルール」枠は、フレームで作成します。

ツールボックスの「フレーム」を選択してユーザーフォーム上の適切な位置を指定します。

invoice3tenuserfp09

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

オプションボタンを配置する

「小数点以下計算ルール」ボタンは、オプションボタンで作成します。

ツールボックスの「オプションボタン」を選択してユーザーフォーム上の適切な位置を指定します。

invoice3tenuserfp07

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

コンボボックスを配置する

「フォントの選択」プルダウンメニューは、コンボボックスで作成します。

ツールボックスの「コンボボックス」を選択してユーザーフォーム上の適切な位置を指定します。

invoice3tenuserfp08

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

コントロールのプロパティ設定

invoice3tenuserfp33

配置した各コントロールは「オブジェクト名」や「Caption(表示名)」などを個別に設定する必要があります。

今回は、ラベル、フレームについては設定を行いません。

プロパティ表オブジェクト名Caption他設定
「押印をする」チェックボックス
invoice3tenuserfp10
CheckBox2押印をするFont
FontColor
「テンプレ作成」コマンドボタン
invoice3tenuserfp11
テンプレ作成するテンプレ作成Font
FontColor
「顧客番号」テキストボックス
invoice3tenuserfp12
顧客番号Font
「発行年月日」テキストボックス
invoice3tenuserfp13
発行年月日Font
「小数点以下計算ルール」オプションボタン
「切り上げ」
invoice3tenuserfp14
OptionButton1切り上げFont
GroupName
「小数点以下計算」
「小数点以下計算ルール」オプションボタン
「四捨五入」
invoice3tenuserfp15
OptionButton2四捨五入Font
GroupName
「小数点以下計算」
「小数点以下計算ルール」オプションボタン
「切り捨て」
invoice3tenuserfp16
OptionButton3切り捨てFont
GroupName
「小数点以下計算」
「データ連携」コマンドボタン
invoice3tenuserfp17
データ連携するデータ連携Font
FontColor
「ソリマチ販売王連携」チェックボックス
invoice3tenuserfp18
CheckBox1ソリマチ販売王連携Font
FontColor
「フォントの選択」コンボボックス
invoice3tenuserfp19
ComboBox1Font
フォントサイズ変更
「品名欄」テキストボックス
invoice3tenuserfp20
品名FFont
フォントサイズ変更
「顧客名」テキストボックス
invoice3tenuserfp21
顧客FFont
フォントサイズ変更
「品名番号毎に個別に変更」チェックボックス
invoice3tenuserfp22
CheckBox4GroupName
「フォント個別変更」
フォントサイズ変更
「個別フォントサイズ」テキストボックス
invoice3tenuserfp23
個別フォントサイズFont
フォントサイズ変更
「品名番号」テキストボックス
invoice3tenuserfp24
個別品名番号Font
「帳票作成」コマンドボタン
invoice3tenuserfp25
伝票作成する帳票作成Font
FontColor
「帳票印刷」コマンドボタン
invoice3tenuserfp26
帳票印刷する帳票印刷Font
FontColor
「帳票保存」コマンドボタン
invoice3tenuserfp27
伝票保存する帳票保存Font
FontColor
「シートクリア(初期化)」コマンドボタン
invoice3tenuserfp28
シートクリアするシートクリア(初期化)Font
FontColor
「印刷時自動保存」チェックボックス
invoice3tenuserfp29
CheckBox3印刷時自動保存Font
FontColor
ユーザーフォーム「操作パネル」
invoice3tenuserfp30
インボイス3点操作パネル操作パネル

設定の最後に「タブオーダー」も整えておきます。

ユーザーフォームModuleへのVBA記述

invoice3tenuserfp34

各コントロールのイベント動作を規定するVBAコードを、ユーザーフォームModuleに記述します。

それぞれがプロシージャー単位で、1つづつ分かれています。

VBA
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コード記述

invoice3tenuserfp35

ユーザーフォームを作成した時は、

そのユーザーフォームを表示させるためのコードを ” どこかに ” 記述しておかないといけません。

一般的に多いのは、次のようなイベントが発生したときに表示実行されるパターンです。

  1. エクセルブックを開くと同時に表示する
  2. 特定のあるシートを開くと表示される
  3. シートに開閉のボタンを設置する

今回は①と②のイベント発生時に表示されるようにコード記述をします。

ブックModule( ThisWorkbook )

VBA
Private Sub Workbook_Open()
        インボイス3点操作パネル.Show vbModeless
End Sub

シートModule( Sheet1(作業シート) )

VBA
Private Sub Worksheet_Activate()
        If インボイス3点操作パネル.Visible = False Then
            インボイス3点操作パネル.Show vbModeless
        End If
End Sub

どのシートモジュールにコードを記述するかは、決まりごとはありません。自由にシートを選べますし、複数シートに記述しても大丈夫です。

ユーザーフォームの設置のまとめ

invoice3tenuserfp36

エクセルVBAで作るソフトで、ユーザーフォームは、UI(ユーザーインターフェース)として度々登場します。

回を重ねてユーザーフォームを作っていると、数多いコントロールも自然と、配置方法と使い方を覚えてしまうでしょう。

慣れ優先で取り組んでみてください。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

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