【初心者向けエクセルVBA】InputBoxでの日付入力と月末日の自動算出

★気に入ったらシェアをお願いします!


Panda Calendar

By: yoppy

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

請求データ一覧から請求書を自動で作成するシリーズのVBA講座も今回で7回目となりました。

前回の記事はこちらです。

【初心者向けエクセルVBA】Public変数の宣言とSubプロシージャの呼び出し
請求データ一覧から請求書を自動で作成するシリーズも第6回目となりました。Public変数の宣言、別のSubプロシージャの呼び出しなどによりプログラムをスッキリしつつ、うっかり発見した不具合を直していきます。

前々回のプログラムで不具合があったので修正をしつつ、Public変数やSubプロシージャの分割でスッキリとしたプログラムにまとめました。

今回はInputBoxという命令を使って、任意の月でも処理ができるように改善を図っていきたいと思います。

どうぞよろしくお願いします!

スポンサーリンク

前回のプログラムのおさらいと今回のお題

まず、プロシージャをまたいで使う変数についてはPublic変数の宣言をしてしていましたね。

そしてワークシートの準備のためにシート初期化プロシージャを作成しました。

そして請求書ひな形への転記をするメインの処理がこちらの請求書作成プロシージャです。

今回は請求書作成プロシージャの年月を判断するif文の条件式

の箇所を変更していきます。

なぜなら、この条件式だと月が替わったらVBEを開いて年月を手打ちで書き換えないといけないという状態になってしまっていますよね。

これを解決していきたいと思います。

InputBoxで実行のたびに年月を入力をしてもらう

InputBoxという命令を使いましてプログラムの実行の都度ユーザーに年月を入力をしてもらうようにすることで解決をします。

このように記述します。

変数 = InputBox(表示するテキスト)

この命令が記述されている箇所まで進むと、入力フォームのウィンドウが開きます。

ユーザーからの入力があったら、その内容を変数に格納して次の処理へ進むという形です。

プログラムっぽくなってきましたね~。

今回の場合は、Date型の変数dayCutoffというものを用意しまして

などとすればOKです。

実行してみますとInputBoxの箇所で

InputBoxによる入力フォーム

というウィンドウが表示されます。

これで月が替わってもVBAをいじくる必要がなくなりました。

DateSerialで請求日とお支払期限を自動で算出

請求月をユーザーに都度入れてもらうということでしたら

請求日と支払期限は月末日

セルD15の請求日とセルD16のお支払期限はおのずと決まりますよね。

これも自動で算出してVBAで実行のたびに都度書き換えるようにしちゃいましょう。

このような場合はDateSerialという命令を使います。本来は指定された年、月、日に対応する日付を返す命令で

DateSerial(year, month, day)

と記述します。

を実行すると、イミディエイトウィンドウには”2015/05/05″という日付が出力されます。

なんてことのない命令に見えるのですが、実はちょっとした裏ワザがあります。

DateSerial(year, month, 0)

このようにdayを0にすると前月の末日が返されます。要は1日の前の日だから、ということなんでしょうね。

を実行すると、イミディエイトウィンドウには”2015/04/30″という日付が出力されます。

請求日は当月末、お支払期限は来月末ですから、monthの値をそれぞれ1,2をプラスすれば値が出ますね。

これでOKです。

まとめ

  • InputBoxで実行のたびに入力をする
  • DateSerialで請求日とお支払期限を自動で算出

などを駆使して、月が替わってもVBAをいじらずに活用できるようになりました。

ちょっと長いですが全体のプログラムはこちらです。

新たに発生した品目について請求データに追加していくだけで毎月の請求書を自動で作成できますので、実用としては耐えられるところまで来たと思います。

次ですがもっと欲を出しまして、Worksheetのコピーを活用して取引先が複数になっても対応ができるようにしていきたいと思います。

【初心者向けエクセルVBA】Worksheetのコピーを活用して複数の請求書を作る
請求データ一覧から請求書を自動で作成するシリーズのVBA講座の第8回!前回は取引先1社の場合でしたが、今回は取引先が複数あったとしてもそれぞれの請求書をいっぺんに作成できるようにしていきたいと思います。

合わせてどうぞご覧ください!

連載目次:データ一覧から請求書を自動で作る

  1. 【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
  2. 【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
  3. 【初心者向けエクセルVBA】行の数をカウントする&不要な行を隠す
  4. 【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更
  5. 【初心者向けエクセルVBA】If~Thenを使った条件分岐の超入門
  6. 【初心者向けエクセルVBA】Public変数の宣言とSubプロシージャの呼び出し
  7. 【初心者向けエクセルVBA】InputBoxでの日付入力と月末日の自動算出
  8. 【初心者向けエクセルVBA】Worksheetのコピーを活用して複数の請求書を作る
  9. 【初心者向けエクセルVBA】ファイルのコピーを使って取引先別の請求書を作る