• こんにちは!ブログをご覧いただきありがとうございます。

    今回はエクセルマクロ(VBA)のご紹介をしていきます。

    ※マクロ、VBA等の用語解説は省かせていただきます。ご了承ください。

  • はじめに

今回使用するエクセル関数シートはこちらです。

こちらの購入履歴シートを引き続き使用します。

事前に、購入金額シートに「出力」列を追加しておきます。

今回は、この列に「〇」の入った行が領収書に出力される仕様とするためです。

そして、こちらの領収書をワンクリックで作成するようにしていきます。

  • 「領収書発行」ボタンの作成

まず「領収書発行」ボタンを用意しましょう。

開発>挿入>フォームコントロール>ボタン

を選択します。

※開発タブはデフォルトでは表示されておりませんので、表示するよう設定お願いいたします。

ボタンを置きたい箇所を選ぶと、このようなダイアログが出ます。

ここはひとまずキャンセルしてください。

ボタンのテキストも分かりやすく「領収書発行」に変更します。

  • マクロとボタンの関連付け

次にマクロの作成をします。

開発タブの「Visual Basic」をクリックします。

すると、このような画面が現れます。

左側の「Sheet1(購入履歴)」をダブルクリックします。

このようになりましたでしょうか?

ここにマクロのプログラム(VBA)を書いていきます。

Sub 領収書発行()

End Sub

ここまでできましたら、「領収書発行」ボタンをクリックし、「マクロの登録」を選びます。

先ほど作成した「Sheet1.領収書発行」が現れますので、選択し「OK」を押します。

ここまでで、ボタンにマクロを登録することができました。

  • マクロのプログラム(VBA)を書く

あとは実際のプログラム(VBA)を書いていきます。

下記は領収書シートの発行日に値を転記するプログラムです。

このように記述してください。

Sub 領収書発行()

Sheets("領収書").Range("N2").Value = WorksheetFunction.VLookup("〇", Range("A:H"), 2, False)

End Sub

このプログラムを解説します。まず、式の左辺ですが

Sheets("領収書").Range("N2").Value

「領収書」シートのN2セルの値をこれで表します。

領収書シートの「発行日」にあたります。

次に右辺です

WorksheetFunction.VLookup("〇", Range("A:H"), 2, False)

これは、前回の記事でも紹介したVLOOKUP関数を使用しています。

「A列からH列の範囲で”〇”がある箇所から2列目」という内容です。

購入履歴シートで”〇”のついた行の、登録日、つまり2022/1/7が取得できます。

この2022/1/7を、領収書シートの「発行日」にコピーしています。

ユーザー名と購入金額も同様に書きます。

Sub 領収書発行()

Sheets("領収書").Range("N2").Value = WorksheetFunction.VLookup("〇", Range("A:H"), 2, False)

Sheets("領収書").Range("A4:F4").Value = WorksheetFunction.VLookup("〇", Range("A:H"), 3, False)

Sheets("領収書").Range("C8:N9").Value = WorksheetFunction.VLookup("〇", Range("A:H"), 6, False)

End Sub

このようにすると、ボタンクリックで領収書シートの「発行日」「氏名」「金額」が転記されます。

  • いかがでしたでしょうか。正直なところこの内容ならVBAで書くことは無いかと思います(領収書シートにVLOOKUP関数を書けば実現できるため)。

    しかし、これを応用すれば、一度に複数の領収書を作成することも可能ですので、まずは、とっかかりとしてご紹介しました。

    この記事が業務改善のヒントになれば幸いです。

    お困りのことがあれば、弊社でサポートすることも可能ですので、お気軽にお問い合わせください。