wanna.jp VBAリファレンス
Top > VBA関数リファレンス > 【営業必見】VBA DateSerialで月末日を自動特定!請求書発行を爆速化する魔法のコード

【営業必見】VBA DateSerialで月末日を自動特定!請求書発行を爆速化する魔法のコード

営業担当者の皆さん、毎月の請求書発行作業、お疲れ様です!「今月の請求日は月末日だから…何日だっけ?28?30?31?」と、カレンダーとにらめっこしたり、手計算したりしていませんか?

月末日が月によってバラバラなため、固定値では対応できず、地味に手間がかかるこの作業。月末の忙しい時期に、そんな細かい日付の確認や計算で時間を取られるのはもったいないですよね。

実は、VBAの「DateSerial関数」を使えば、この悩みを一瞬で解決できます。月末日を自動で正確に特定し、あなたの請求書発行業務を劇的に効率化する、まさに「魔法のコード」をご紹介しましょう!

コピペで即解決!月末日を自動で取得するVBAコード

以下のコードをVBAモジュールに貼り付ければ、今月の月末日を簡単に取得できます。指定した年月の月末日を取得することも可能です。

'//////////////////////////////////////////////////////////////
' 関数名: GetLastDayOfMonth
' 概要  : 指定した年月の月末日を取得する関数
' 引数  : targetYear (Optional) - 年 (省略時は現在の年)
'         targetMonth (Optional) - 月 (省略時は現在の月)
' 戻り値: Date型の月末日
' 使い方:
'   ' 今月の月末日を取得
'   Dim lastDay As Date
'   lastDay = GetLastDayOfMonth()
'   MsgBox "今月の月末日は: " & lastDay
'
'   ' 2023年2月の月末日を取得
'   lastDay = GetLastDayOfMonth(2023, 2)
'   MsgBox "2023年2月の月末日は: " & lastDay
'
'   ' 来月の月末日を取得
'   lastDay = GetLastDayOfMonth(Year(Date), Month(Date) + 1)
'   MsgBox "来月の月末日は: " & lastDay
'//////////////////////////////////////////////////////////////
Function GetLastDayOfMonth(Optional targetYear As Variant, Optional targetMonth As Variant) As Date

    ' 引数が省略された場合、現在の年と月を使用
    If IsMissing(targetYear) Then
        targetYear = Year(Date)
    End If
    If IsMissing(targetMonth) Then
        targetMonth = Month(Date)
    End If

    ' DateSerial関数を使って月末日を算出
    ' ポイント: 翌月の0日を指定することで、前月の末日(つまり今月の末日)が取得できる
    GetLastDayOfMonth = DateSerial(targetYear, targetMonth + 1, 0)

End Function

'------------------------------------------------------------
' 例: 今月の月末日をセルに表示するSubプロシージャ
'------------------------------------------------------------
Sub DisplayCurrentMonthLastDay()
    Dim currentMonthLastDay As Date
    currentMonthLastDay = GetLastDayOfMonth() ' 引数なしで今月の月末日を取得
    MsgBox "今月の月末日は: " & Format(currentMonthLastDay, "yyyy/mm/dd")
    ' または、アクティブなセルに表示
    ' ActiveCell.Value = currentMonthLastDay
    ' ActiveCell.NumberFormat = "yyyy/mm/dd"
End Sub

DateSerial関数の「0日」の秘密を解き明かす!

ご紹介したコードで、なぜ targetMonth + 1, 0 と指定すると、月末日が取得できるのか、不思議に思われた方もいるかもしれません。

まとめ:月末日特定から解放され、営業活動に集中しよう!

VBAのDateSerial関数と、その柔軟な日付処理の特性を理解することで、毎月の月末日特定にかかっていた時間と労力を大幅に削減できます。

  • 月末日を自動特定することで、請求書発行のミスをなくし、顧客からの信頼性アップ。
  • ルーティンワークの時間を短縮し、本来の営業活動や顧客との関係構築に集中できる。
  • 月末の残業を減らし、プライベートの時間も確保しやすくなる。

たった数行のVBAコードで、あなたの業務は大きく変わります。ぜひこのコードをコピー&ペーストして、今日から月末日ストレスから解放されてください!

VBAでの業務効率化、悩み解決します

「このマクロ、もっと速くならないかな?」「エラーが消えない…」
Access/VBA専門のwanna.jpにご相談ください。

無料相談はこちら