Excel VBAを使った契約更新日のリマインダーの自動作成方法

この記事では、Excel VBAを使用して契約更新日のリマインダーの自動作成について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、さらに応用例も含めて紹介します。一般的なオフィスワークでは、契約更新日を忘れるとビジネスに大きな影響を与える可能性があります。この記事を参考にして、VBAを利用して日常業務を効率化しましょう。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的なリマインダーシステムの構築

VBAを用いると、Excelの中で特定の日付が近づいた際にアラートやリマインダーを自動生成することができます。


Sub ReminderSetup()
    Dim LastRow As Long
    Dim i As Long

    'アクティブシートの最後の行を取得
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    '各行をループしてチェック
    For i = 2 To LastRow
        If Cells(i, 2).Value = Date Then
            MsgBox "契約更新日です!" & Cells(i, 1).Value, vbInformation, "リマインダー"
        End If
    Next i
End Sub

コードの解説

1. 最初に、ワークシートの最後の行の番号を取得します。これは、リマインダーを設定したい全ての日付をループ処理するためです。
2. ループ処理を使用して、各行の日付を現在の日付と比較します。
3. もし、セルの日付が現在の日付と同じであれば、メッセージボックスを表示します。

応用例

応用1: リマインダーの日数をカスタマイズ

リマインダーを契約更新日の前日や3日前など、特定の日数前に設定することもできます。


Sub AdvancedReminder()
    Dim LastRow As Long
    Dim i As Long
    Dim DaysBefore As Integer

    'リマインダーを表示する日数を設定
    DaysBefore = 3

    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    For i = 2 To LastRow
        If Cells(i, 2).Value - DaysBefore = Date Then
            MsgBox DaysBefore & "日後に契約更新日です!" & Cells(i, 1).Value, vbInformation, "リマインダー"
        End If
    Next i
End Sub

応用2: 一度だけのリマインダー

リマインダーを一度だけ表示するように、リマインダーが表示されたかどうかの情報を追加します。


Sub OnceReminder()
    Dim LastRow As Long
    Dim i As Long
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
    For i = 2 To LastRow
        If Cells(i, 2).Value = Date And Cells(i, 3).Value <> "Done" Then
            MsgBox "契約更新日です!" & Cells(i, 1).Value, vbInformation, "リマインダー"
            Cells(i, 3).Value = "Done"
        End If
    Next i
End Sub

応用3: 複数のリマインダー

複数の日付をもとにリマインダーを設定する場合の方法です。


Sub MultipleDatesReminder()
    Dim LastRow As Long
    Dim i As Long, j As Integer
    Dim ReminderDates(1 To 3) As Date

    'リマインダー日付を設定
    ReminderDates(1) = DateAdd("d", 7, Date)
    ReminderDates(2) = DateAdd("d", 14, Date)
    ReminderDates(3) = DateAdd("d", 21, Date)

    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    For i = 2 To LastRow
        For j = 1 To 3
            If Cells(i, 2).Value = ReminderDates(j) Then
                MsgBox ReminderDates(j) & "に契約更新日です!" & Cells(i, 1).Value, vbInformation, "リマインダー"
            End If
        Next j
    Next i
End Sub

まとめ

Excel VBAを利用することで、契約更新日のリマインダーを効率的に管理することができます。上記のコードや応用例を参考に、日常業務の効率化を図ってみてください。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次