取得」という検索キーワードに気づきました。VBAに限らない、日付計算の定番的な疑問です。[スポンサードリンク]前月の1日を取得するサンプルマクロ以下のSubプロシージャを実行すると、前月1日の日付が、メッセージボックスに表示されます。Sub年・月・日をバラバラにして計算して再度日付データにするこういった日付計算は、年・月・日をバラバラにしてから計算を行い、再度日付データにするのが基本です。1)といった数式をセルに入力します。VBAでの考え方も同じです。VBAの関数と、ワークシート関数とで別の関数が使われていますが、考え方はまったく同じです。年・月・日を表す数値から日付データを取得する、ワークシート関数のDATE関数に似ているのが、VBA関数のDateSerial関数です。Year関数やMonth関数は、たまたまVBA関数とワークシート関数とが、同じ綴りで、同じように日付データから年・月を表す数値を返しますが、もちろん別モノです。ワークシート上で使われるYEAR・MONTHはワークシート関数で、VBAのYear・MonthはあくまでもVBAの関数です。1)VBAのDateAdd関数を使った例も見かけますが、DateAdd関数が頻出するようなモジュールなどでなければ、上記プロシージャのように演算子で引き算するほうが、可読性が高いと感じます。1)としてもOKですけれど、Now関数のほうが意味がよりわかりやすく、可読性が高いと感じます。インストラクターのネタ帳VBAのDateSerial関数で、前月や翌月等の日付を取得する場合に、Now関数とDate関数を使ったときの違いについて解説しています。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。