領収書テンプレートに、エクセルシートのデータを反映させます

ryousyudataeyecatcha

エクセルVBAを使って独自に作った領収書に、発行情報をまとめた一覧表からのデータを反映させます。
こうすれば、その一覧表のデータ内容を変更するだけで簡単に登録修正や再発行ができるようになります。

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

今回の記事は”発行データ入力”シートを作成し、

入力されたデータを領収書テンプレートの表示に関連付けをしていきます。

前回の記事を確認された上で読み進めて頂くと分かり易いかと思います。

データを取り込む入力シートを作成します

hakkoudatapn001

それでは、発行データ入力シートを作成していきます。

Sheet名を変更します

”Sheet2”というシート名を”発行データ入力”という名前に変更します。

シート名は前回も変更しましたので、同じ方法で作業してください。

変更方法はこの記事を参考にしてください。『Sheet(シート)名の変更』へ

このようになります。

hakkoudata001

 データ入力の一覧表を作ります

A列からH列まで1行目に項目名を書いていきます。

セルA1・・・伝票番号(発行通番)  セルB1・・・作成年月日

セルC1・・・宛名1(社名組織名)  セルD1・・・宛名2(発行先名)

セルE1・・・領収金額        セルF1・・・消費税

セルG1・・・但し書き        セルH1・・・発行済

ビジュアル的にはお好みに合わせて設定してください。

このような感じになります。

hakkoudata002

後は罫線など適当に引いていただいてもOKです。

エクセルでよく使う関数は各セルには埋め込みません誤って関数式を消してしまうこともありません。

先頭行の項目表示以外は、”すべてのセル”は空のままです。

データの入れ方は、今配置したこの項目に合ったデータを記入するということです。

領収書にデータを反映させるVBAを組んでいきます

hakkoudatapn002

ここでは、本体のVBAを組み上げていきます。

まず手始めに入力されたデータを、領収書テンプレートに表示させるところから始ます。

発行年月日、表示金額(税込み金額、消費税、本体価格)と表示方法などは、表示データの加工が必要な部分になります。

後の記事の中で、今回説明するVBAコードをさらに加工することになります。

VBE(ビジュアルベーシックエディター)を起動する

vbavbekidoeyecatch VBA初めての起動。VBEの立ち上げ、保存と終了

”開発タブ”から”Visual Basic”をクリックしてVBエディターのウインドウを開いてください。

開いたウインドウの”挿入”タブから”標準モジュール”をクリックします。

hakkoudata003_1a

このようになります。

hakkoudata004

VBAコードの記述方法

コードウインドにVBAコードを記述していきますが、記述方法にはルールがあります。

「Sub ・・・・・ End Sub」の中でコードを記述していきます。

詳しくは、記述方法を皆さんで調べてください。

VBA
Sub プロシージャー名()

    本文

End Sub

大雑把にこのような記述様式です。

変数とは、発行データ入力シートの各項目のデータになります。(それぞれの領収書で金額などが変わります。)

セルA1・・・伝票番号(発行通番)→ aN
セルB1・・・作成年月日 → aDay
セルC1・・・宛名1(社名組織名など)→ aCusa
セルD1・・・宛名2(発行先名) → aCusb
セルE1・・・領収金額 → aBill
セルF1・・・消費税 → aTax
セルG1・・・但し書き → aNote
セルH1・・・発行

と変数名を付けます。

ここまでの内容をコードとして記述します。

コード①

VBA
Sub 領収書作成()
  Dim aN As Long
  Dim aDay As String
  Dim aCusa As String
  Dim aCusb As String
  Dim aBill As Long
  Dim aTax As Long
  Dim aNote As String
  Dim anum As Integer
  Dim aBilln As String

領収書表示データを変数としてコード化する

次に、発行データ入力シートの「どの顧客の分の領収書を作るのか」を指定する方法ですが、

入力シートで、伝票番号(発行通番)をクリックすることで作成を決定できるようにします。

例えば「伝票番号0001番をクリックすれば、そのお客様の領収書を発行できる」ようにします。

エクセルVBAでは今この時、カーソルが掴んでいる(置かれている)セルのことをアクティブなセルと言います。

そしてその位置(行と列番号)をプログラムコードに利用することができます。

その位置は、領収書発行の度に変わりますので、先ほどと同じように変数で表示することができます。

アクティブセルの行番号を変数aRとすると、aR=ActiveCell.Row と表示できます。

さらには、

そのアクティブセルは、どのシート名での動きを言っているのかをプログラムに示す必要があります。

そのことを Worksheets(”発行データ入力”).Select と指定します。

したがって、今指定した、発行したい領収書のデータは、

発行データ入力シートでの作業でWorksheets(“発行データ入力”).Select
アクティブセルのあるaR行のA列の伝票番号aN = Range(“A” & aR).Value
アクティブセルのあるaR行のB列の作成年月日aDay = Range(“B” & aR).Value
アクティブセルのあるaR行のC列の宛名1aCusa = Range(“C” & aR).Value
アクティブセルのあるaR行のD列の宛名2aCusb = Range(“D” & aR).Value
アクティブセルのあるaR行のE列の領収金額aBill = Range(“E” & aR).Value
アクティブセルのあるaR行のF列の消費税aTax = Range(“F” & aR).Value
アクティブセルのあるaR行のG列の但し書きaNote = Range(“G” & aR).Value

となります。

Rangeはセル位置の指定方法、Valueは値と覚えてください。

ここまでの内容をコードとして記述します。

コード②

VBA
    Worksheets("発行データ入力").Select
    aR = ActiveCell.Row
    aN = Range("A" & aR).Value
    aDay = Range("B" & aR).Value
    aCusa = Range("C" & aR).Value
    aCusb = Range("D" & aR).Value
    aBill = Range("E" & aR).Value
    aTax = Range("F" & aR).Value
    aNote = Range("G" & aR).Value

SELECTとActiveをもう少し詳しく説明しています。

vbaselacteyecatch VBA 似た者SelectとActivateの違いを理解

変数の値を領収書テンプレートに表示する

発行データから取り出したそれぞれの変数を、領収書テンプレートに表示させていきます。

ここでは、注意しなければならないことがあります。

領収書に表示される金額についてですが、税込み価格、本体価格、消費税額の3種類あります。

しかし発行データシートには本体価格のデータがありませんので、領収書を作成する都度計算して表示させる必要があります。

同時に消費税額が0円の場合は税込み価格になりますのであえて本体価格は表示しないようにします。

これには「もし〇〇なら××」という条件式を利用して計算します。

この作業は、コード④の部分になります。

また最初に、領収書シートで行うと指定することを忘れないようにします。

ここまでを内容をコードにしますとこのようになります。

コード③

VBA
    Worksheets("領収書").Select
    Range("T3") = aN
    Range("T25") = aN
    Range("R5") = aDay
    Range("R27") = aDay
    Range("C6") = aCusa
    Range("C7") = aCusb
    Range("C28") = aCusa
    Range("C29") = aCusb

コード④

VBA
    If aTax = 0 Then
        Range("G20") = " 円"
        Range("G42") = " 円"
        Range("H21") = " 円"
        Range("H43") = " 円"
    ElseIf aTax <> 0 Then
        Range("G20") = aBill - aTax & "円"
        Range("G42") = aBill - aTax & "円"
        Range("H21") = aTax & "円"
        Range("H43") = aTax & "円"
    End If
    Range("F13") = aNote
    Range("F35") = aNote
vbaifjyokeneyecatch If条件文のVBAコードの組み方。条件の絞り方を最速理解

領収書の作成にエクセルのデータを反映のまとめ

hakkoudatapn003

ここまでの内容を一度コードウインドに記述してテストしてみましょう。

コード①、コード②、コード③、コード④を順番にコピペで貼り付けてみてください。

このような感じになったでしょうか。

hakkoudata005n

発行データ入力シートに適当にサンプルデータを記入してください。

三角の緑色アイコン(SUB/ユーザーフォームの実行)をクリックすると記入したVBAマクロが実行されます。

hakkoudata006_1bn

自動で領収書シートが表示され、テンプレートにデータが表示されれば成功です。

次の記事では、金額表示の部分を少し凝ったものにしていきます。

Excelマクロ&VBA超入門 今すぐ使えるかんたんぜったいデキます!
エクセルVBAを初めて勉強するときに効く
vbastudy016a
vbastudy017a

電子書籍版「Excelマクロ&VBA超入門」をamazonで見てみる

(著者)井上香緒里
(出版社)技術評論社
(税込価格)1,738円(本体1,580円+税)

マクロとVBAについて学んでみたいけれど,いまひとつ自信がないという方のために,ひとつひとつの操作を丁寧に解説する1冊目の教科書です。
エクセルVBAの「い・ろ・は の い」から説明していますので、安心して取り組める参考書です。
例題として、
  • 「データ消去」「シートのコピー」「メッセージボックス」の機能を持つお小遣い帳
  • 「入力フォーム」の機能を持った歩数表
2つの題材ファイルを作成しながら,マクロとVBAの基本を学習していきます。

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

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

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

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

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

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

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min