【誰でも簡単にできる!】エクセルVBAで請求書を作成する方法

【誰でも簡単にできる!】エクセルVBAで請求書を作成する方法 IT

エクセルのVBAを使うと、効率的に作業を行うことができます。

VBAのコードの入力に抵抗がある人もいますが、簡単なコードで作業の効率化を図ることができます。

ここでは、売上等の一覧表から請求書を作成するコードを紹介します。

エクセルVBAで請求書を作成する手順

①エクセルファイルに、以下のような「一覧」シートと「請求書」シートがあるとします。

一覧シートに入力されたデータを基に請求書を作成します。

一覧シートの「得意先入力」欄の右セルに得意先の名前を入力し、VBAを実行することによって、その得意先宛の請求書を作成します。

②一覧シート上の「開発」の「挿入」タブから「ボタン(フォームコントロール)」を選びます。

任意の箇所で、ドロップ・アンド・ドラッグをします。

③「マクロ名」に請求書作成と入力し、OKを押します。

④ボタン名も請求書作成に変更し、「得意先入力」欄の右辺りに移動させます。

⑤「開発」の「コード」タブで「Visual Basic」を選びます。

エクセルファイルと別に、VBAの入力画面が作成されます。

⑥「挿入」から「標準モジュール」を選びます。

⑦以下のコードを入力します。

コードの内容の説明は次の章以降でします。

⑧一覧シート上の「得意先入力」欄の右セルに得意先である「田中」入力し、「請求書作成」ボタンを押します。

一覧シート上の得意先が「田中」であるデータ(日付、内容、金額)が請求書に表示されます。

エクセルVBAの請求書作成コード

前の章の手順⑦で入力したコードの内容の説明をします。

入力したコードに行番号をふると、以下のとおり、①~⑳になります。

①Sub 請求書作成()

③Dim line

④Dim count

⑥Worksheets(“請求書”).Range(“A5”).Value = Worksheets(“一覧”).Range(“B1”).Value

⑦Worksheets(“請求書”).Range(“D1”).Value = Date

⑧line = 8

⑨Worksheets(“請求書”).Range(“A8:C9”).ClearContents

⑪For count = 4 To 9

⑫If Worksheets(“一覧”).Range(“B” & count).Value = Worksheets(“一覧”).Range(“B1”).Value Then

⑬Worksheets(“請求書”).Range(“A” & line).Value = Worksheets(“一覧”).Range(“A” & count).Value

⑭Worksheets(“請求書”).Range(“B” & line).Value = Worksheets(“一覧”).Range(“C” & count).Value

⑮Worksheets(“請求書”).Range(“C” & line).Value = Worksheets(“一覧”).Range(“D” & count).Value

⑯line = line + 1

⑰End If

⑱Next

⑳End Sub

エクセルVBAの請求書作成コードの説明

①行目と⑳行目の間に処理するコードを入力します。

③、④行目は、変数として、line、countを使うという宣言をしています。

前半(⑥~⑨行)は請求書シートを整理するVBAコード、後半(⑪~⑱行)は一覧シートのデータを請求書シートに移行するVBAコードの内容に大きくわけることができます。

請求書シートを整理するコード

⑥行目は、請求書シートのセルA5に、一覧シートのセルB1(得意先入力欄に入力した得意先)を代入するコードです。

⑦行目は、請求書シートのセルD1に、今日の日付を入力するコードです。

⑧行目は、変数を定義するコードです。

請求書シートの8行目以降にデータを代入していくため、8と定義しています。

⑨行目は、請求書シートのA8・9、B8・9、C8・9に入力されたデータをクリアするコードです。

今回は、代入されるデータが最大でも2行であるため、セルを8行9行としています。

初回であれば、データが入力されていないため、不要ですが、得意先に田中を入力した後に、斎藤を入力する場合等に必要になってきます。

一覧シートのデータを請求書シートに移行するコード

⑪行目は、変数countを4から9まで定義するコードです。⑱行目までが範囲です。

⑫行目は、一覧シートのセルB4~9(得意先)が、一覧シートのセルB1(得意先入力欄に入力した得意先)と同じ場合に、以降を処理するコードです。⑰行目までが範囲なので、⑬~⑯までを処理します。

⑬行目は、請求書シートのセルA8に、一覧シートのセルA4~9(日付)を代入するコードです。

⑭行目は、請求書シートのセルB8に、一覧シートのセルC4~9(内容)を代入するコードです。

⑮行目は、請求書シートのセルC8に、一覧シートのセルD4~9(金額)を代入するコードです。

⑯行目は、変数lineに1を足すコードです。

請求書シートの8行目にデータの代入が終わったので、9行目にデータを代入していきます。

タイトルとURLをコピーしました