使用するワークシートの準備 インボイス見積納品請求伝票

invoice3tenshseteyecatch

エクセルで適格請求書3点伝票を作成します。
今回は使用する8枚のワークシートの開始設定をVBAコード化していきます。

シートをクリアして見出し項目を配置します。

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

インボイス制度に利用できる適格請求書をエクセルVBAで作成できるようにします。

インボイス見積納品請求3点伝票は2つの種類を紹介していますが、これから数回に渡って、

「インボイス見積納品請求伝票日付版」を、VBAで作成する方法を解説していきます。

今回は白紙のエクセルブックで、帳票を作成するために利用するワークシートの必要な開始設定の説明です。

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

ワークシートを開始設定する

invoice3tenshsetp06

まず最初に、売上データを記述する各ワークシートの見出し項目の表示設定を行うためのVBAを設定します。

ここではModule5に記述しています。

使用するワークシート数は8枚

「インボイス見積納品請求伝票日付版」をエクセルVBAで作成するに当たって、使用するワークシートは8枚です。

  1. 「作業シート」
  2. 「請求書」
  3. 「納品書」
  4. 「見積書」
  5. 「宛名の登録」
  6. 「電子印鑑の登録」
  7. 「外税計算」
  8. 「データストック」

を準備設定していきます。

ワークシートの開始設定で行うこと

白紙のシート状態から、そのシートで必要な売上データ項目の見出し行を設置します。

また、一部の項目はコマンドボタンになっていて、クリックで次の必要な操作を行えるようにしておきます。

前に使用したデータは次に使用するときにはに必要がないので、準備の設定ではワークシートをデフォルトの状態に戻すためのVBAコードをまず記述しておきます。

vbacleareyecatch シートクリアーを目的のメソッド別にVBA最速理解
VBA
                With ActiveSheet
                        .Cells.ClearFormats
                        .Cells.ClearContents
                        .Cells.UseStandardHeight = True
                        .Cells.UseStandardWidth = True
                        .DrawingObjects.Delete
                End With

このコードに続けて、ワークシートそれぞれの開始設定のためのコードをつないでいきます。

各ワークシートの開始設定のコード

「作業シート」のコード

「作業シート」を準備設定するVBAは以下の様になります。

vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する
VBA
Sub 作業シート再構成()
'前回使用で設置したチェックボックスとコマンドボタンを削除
        With ThisWorkbook.Worksheets("作業シート")
            .CheckBoxes.Delete
            .Buttons.Delete
            .Range("B2:C" & Rows.Count).Clear
            .Rows(1).Font.Bold = True
'A1セルにコマンドボタン設置
            With .Range("A1")
                .RowHeight = 38.25
                .ColumnWidth = 4.75
                With ActiveSheet.Buttons.Add(.Left, .Top, _
                            .Width, .Height)
                    .Name = "通番設置"
                    .OnAction = "通番再配置"
                    With .Characters
                        .Text = "通番"
                        .Font.Size = 10
                    End With
                End With
            End With
'B1セルにコマンドボタン設置
            With Range("B1")
                    .ColumnWidth = 4.63
                With ActiveSheet.Buttons.Add(.Left, .Top, _
                            .Width, .Height)
                    .Name = "消費税非課税設定ボタン"
                    .OnAction = "チェックボックス非配置"
                    With .Characters
                        .Text = "非課税CHECKBOX"
                        .Font.Size = 8
                    End With
                End With
            End With
'C1セルにコマンドボタン設置
            With Range("C1")
                    .ColumnWidth = 4.63
                With ActiveSheet.Buttons.Add(.Left, .Top, _
                            .Width, .Height)
                    .Name = "消費税8%設定ボタン"
                    .OnAction = "チェックボックス8配置"
                    With .Characters
                        .Text = "8%CHECKBOX"
                        .Font.Size = 8
                    End With
                End With
            End With
'各項目タイトルを表示
            With .Range("D1")
                .Value = "日付"
                .ColumnWidth = 8.38
            End With
            
            With .Range("E1")
                .Value = "品名"
                .ColumnWidth = 69.13
            End With
            With .Range("F1")
                .Value = "数量"
                .ColumnWidth = 8.38
            End With
            With .Range("G1")
                .Value = "単位"
                .ColumnWidth = 8.38
            End With
            With .Range("H1")
                .Value = "単価"
                .ColumnWidth = 8.38
            End With
            With .Range("I1")
                .Value = "税別金額"
                .ColumnWidth = 8.38
            End With
        End With
End Sub

前回使用で設置したチェックボックスとコマンドボタンを削除

前回使用したチェックボックス、コマンドボタンなどのコントロールは、このコードでクリアされます。

チェックボックスは、Boolean型で指定したセルに値を排出します。

なので、その指定した位置にあるセルも値をクリアしておきましょう。

A1セルにコマンドボタン設置

データの通番を振るためのコマンドボタンを設置します。

クリック時の動作は、「 OnAction = プロシージャー名 」で指定します。

B1セルにコマンドボタン設置

消費税が非課税の商品をマークするチェックボックスを設置する用のコマンドボタンを作ります。

C1セルにコマンドボタン設置

消費税が8%課税の商品をマークするチェックボックスを設置する用のコマンドボタンを作ります。

各項目タイトルを表示

見出し行にその他の項目表示を行います。

invoice3tenshsetp01

「請求書」「納品書」「見積書」シートのコード

3伝票を表示させるこれらのワークシートは、データや書式設定や画像すべてをクリアしたデフォルト状態に戻しておきます。

先述のシートクリアのVBAコードになります。

「宛名の登録」シートのコード

「宛名の登録」シートについては見出し行の項目の表示のみになります。

VBA
Sub 宛名の登録再構成()
        With ThisWorkbook.Worksheets("宛名の登録")
            With .Range("A1")
                .Value = "NO"
                .ColumnWidth = 8.38
                .RowHeight = 24
            End With
            With .Range("B1")
                .Value = "顧客番号"
                .ColumnWidth = 8.38
            End With
            With .Range("C1")
                .Value = "宛名"
                .ColumnWidth = 73.13
            End With
            With .Range("D1")
                .Value = "郵便番号"
                .ColumnWidth = 8.38
            End With
            With .Range("E1")
                .Value = "住所"
                .ColumnWidth = 30.63
            End With
        End With
End Sub
invoice3tenshsetp02

「電子印鑑の登録」シートのコード

「電子印鑑の登録」シートについては、見出し項目表示と作表(データ記入欄)を作ります。

vbacellsbordereyecatch 「罫線」のVBAを最速理解 vbaborder1eyecatch Bordersの/位置/線種/太さ/色/と<外枠だけの罫線>の設置
VBA
Sub 電子印鑑の登録再構成()
        With ThisWorkbook.Worksheets("電子印鑑の登録")
            .Rows("1:12").RowHeight = 24
            .Columns(1).ColumnWidth = 8.38
            .Columns(2).ColumnWidth = 44.38
            .Range("A1:A13, B1").Interior.ColorIndex = 15
            With Range("A1:B13")
                .Borders.LineStyle = xlContinuous
                .Borders.Weight = xlHairline
                .BorderAround LineStyle:=xlContinuous, _
                            Weight:=xlThin
            End With
            With Range("A12:B12").Borders(xlEdgeBottom)
                .LineStyle = xlNone
            End With
            With .Range("A1")
                .Value = "項目"
            End With
            With .Range("B1")
                .Value = "内容"
            End With
            With .Range("A2")
                .Value = "自社名"
            End With
            With .Range("A3")
                .Value = "代表者名"
            End With
            With .Range("A5")
                .Value = "郵便番号"
            End With
            With .Range("A6")
                .Value = "住所"
            End With
            With .Range("A7")
                .Value = "電話番号"
            End With
            With .Range("A8")
                .Value = "FAX番号"
            End With
            With .Range("A9")
                .Value = "メール"
            End With
            With .Range("A10")
                .Value = "登録番号"
            End With
            With .Range("A11")
                .Value = "振込銀行"
            End With
            With .Range("A13")
                .Value = "社印"
                .RowHeight = 70.54
            End With
        End With
End Sub
invoice3tenshsetp04

「外税計算」シートのコード

「外税計算」シートについては、作業シートと同様にコマンドボタンを見出し行に設置します。

VBA
Sub 外税計算再構成()
'前回使用で設置したチェックボックスとコマンドボタンを削除
        With ThisWorkbook.Worksheets("外税計算")
            .CheckBoxes.Delete
            .Buttons.Delete
            .Range("B2:C" & Rows.Count).Clear
            .Rows(1).Font.Bold = True
'A1セルにコマンドボタン設置
            With .Range("A1")
                .RowHeight = 38.25
                .ColumnWidth = 4.75
                With ActiveSheet.Buttons.Add(.Left, .Top, _
                            .Width, .Height)
                    .Name = "通番設置"
                    .OnAction = "通番再配置"
                    With .Characters
                    .Text = "通番"
                    .Font.Size = 10
                    End With
                End With
            End With
'B1セルにコマンドボタン設置
            With Range("B1")
                .ColumnWidth = 4.63
                With ActiveSheet.Buttons.Add(.Left, .Top, _
                            .Width, .Height)
                    .Name = "消費税内税ボタン"
                    .OnAction = "チェックボックス内税配置"
                    With .Characters
                        .Text = "内税CHECK"
                        .Font.Size = 8
                    End With
                End With
            End With
'C1セルにコマンドボタン設置
            With Range("C1")
                .ColumnWidth = 4.63
                With ActiveSheet.Buttons.Add(.Left, .Top, _
                            .Width, .Height)
                    .Name = "内税8%チェック"
                    .OnAction = "チェック8内税配置"
                    With .Characters
                    .Text = "8%内税CHECK"
                    .Font.Size = 8
                    End With
                End With
            End With
'K1セルにコマンドボタン設置
            With Range("K1")
                .ColumnWidth = 8.38
                With ActiveSheet.Buttons.Add(.Left, .Top, _
                            .Width, .Height)
                    .Name = "税別化し転送"
                    .OnAction = "税別化転送"
                    With .Characters
                    .Text = "税別化転送"
                    .Font.Size = 8
                    End With
                End With
            End With
'各項目タイトルを表示
            With .Range("D1")
                .Value = "日付"
                .ColumnWidth = 8.38
            End With
            
            With .Range("E1")
                .Value = "品名"
                .ColumnWidth = 69.13
            End With
            With .Range("F1")
                .Value = "数量"
                .ColumnWidth = 8.38
            End With
            With .Range("G1")
                .Value = "単位"
                .ColumnWidth = 8.38
            End With
            With .Range("H1")
                .Value = "単価"
                .ColumnWidth = 8.38
            End With
            With .Range("I1")
                .Value = "税別金額"
                .ColumnWidth = 8.38
            End With
            With .Range("J1")
                .Value = "備考"
                .ColumnWidth = 8.38
            End With
        End With
End Sub

前回使用で設置したチェックボックスとコマンドボタンを削除

前回使用したチェックボックス、コマンドボタンなどのコントロールは、このコードでクリアされます。

チェックボックスは、Boolean型で指定したセルに値を排出します。

なので、その指定した位置にあるセルも値をクリアしておきましょう。

A1セルにコマンドボタン設置

データの通番を振るためのコマンドボタンを設置します。

クリック時の動作は、「 OnAction = プロシージャー名 」で指定します。

B1セルにコマンドボタン設置

消費税が内税計算されている商品をマークするチェックボックスを設置する用のコマンドボタンを作ります。

C1セルにコマンドボタン設置

消費税が8%で内税計算されている商品をマークするチェックボックスを設置する用のコマンドボタンを作ります。

K1セルにコマンドボタン設置

『チェックボックスにチェックが入った商品の内税価格を本体(外税)価格にリバースし、その処理後のデータ全体を「作業シート」に転記する』ことを実行するためのコマンドボタンを見出し行に設置します。

各項目タイトルを表示

見出し行にその他の項目表示を行います。

invoice3tenshsetp05

「データストック」シートのコード

「データストック」シートは単にメモのためのシートです。例えば、必要な売上データの一時退避地に使えるシートです。

なので、シート準備のためのVBAコードは、ワークシートをデフォルトの白紙に戻すだけのものになります。

それぞれのワークシート開始設定のコードを一纏めにする

それぞれのワークシートの処理コードを1回ずつ選択して実行していては大変ですので、全ての処理が1クリックで実行できるように「ひとまとめにした処理コード」を作成します。

ただし、常にすべてのワークシートを一度にデフォルト化したい訳ではないので、少しVBAコードに工夫を加えます。

VBA
Sub Clearする()
    Dim Answ As Long
        ThisWorkbook.Activate
'実行ボタンがクリックされた時の再確認メッセージ
        Answ = MsgBox("実行するとシートが初期化されます。" _
                    & vbCrLf & "実行しますか?" _
                    , vbYesNo + vbQuestion, _
                            "インボイス見積納品請求3点日付版作成")
            If Answ = vbYes Then
'全シート共通処理コード
                With ActiveSheet
                        .Cells.ClearFormats
                        .Cells.ClearContents
                        .Cells.UseStandardHeight = True
                        .Cells.UseStandardWidth = True
                        .DrawingObjects.Delete
                End With
'シート別の処理方法指定
                If ActiveSheet.Name = "作業シート" Then
                    Call Module5.作業シート再構成
                ElseIf ActiveSheet.Name = "宛名の登録" Then
                    Call Module5.宛名の登録再構成
                ElseIf ActiveSheet.Name = "電子印鑑の登録" Then
                    Call Module5.電子印鑑の登録再構成
                ElseIf ActiveSheet.Name = "外税計算" Then
                    Call Module5.外税計算再構成
                End If
            Else
                Exit Sub
            End If
        ActiveSheet.Range("A1").Select
End Sub

実行ボタンがクリックされた時の再確認メッセージ

ユーザーフォームのコマンドボタンで操作、実行できるようにしますが、間違いクリックを防止するためにメッセージを表示して再確認を行います。

invoice3tenshsetp03

全シート共通処理コード

ワークシートをデフォルトの白紙に戻すVBAコードです。

シート別の処理方法指定

If条件文を使ってワークシート別に処理を分岐させています。

ワークシートの準備設定のまとめ

invoice3tenshsetp07

このワークシートの準備設定を行うことで、インボイス見積納品請求伝票日付版を操作するためのスタンバイとなります。

一度使用したそれぞれのシートを、次回使用時にデフォルト状態にリセットすることが出来るようになりました。

次回は、コントロールパネルとなるユーザーフォームを作成していきます。

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

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

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

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

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

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