Excel VBAでインベントリチェックのリマインダーを設定する方法

この記事では、Excel VBAを利用してインベントリチェックのリマインダーを設定する方法を詳しく解説します。具体的なコード例とその詳細、さらに応用例を通して、インベントリ管理の効率化を実現するためのヒントを提供します。

目次

Excel VBAの基本

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

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

基本のコード

Excel VBAを利用して、特定の条件下でインベントリの数量が低下している場合にリマインダーを表示する基本のコードです。


Sub InventoryReminder()

    Dim LastRow As Long
    Dim i As Integer
    Dim AlertLimit As Integer

    AlertLimit = 10  'リマインダーを表示する数量

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

    For i = 2 To LastRow
        If ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value < AlertLimit Then
            MsgBox ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value & "の在庫が" & AlertLimit & "未満です。"
        End If
    Next i

End Sub

コードの詳細解説

このコードは、Excelのシート内にあるインベントリデータを走査し、設定した閾値(この場合は10)を下回る場合にメッセージボックスでリマインダーを表示します。

– **AlertLimit**: リマインダーを表示する数量を設定します。
– **LastRow**: シート内のデータの最終行を取得します。
– **For文**: シート内のデータを行ごとに走査します。
– **MsgBox**: 在庫がAlertLimit未満の場合、該当する商品名と共にリマインダーを表示します。

応用例

1. 複数のシートでリマインダーチェック

リマインダーのチェックを行うシートが複数ある場合に、それら全てのシートでチェックを行う方法です。


Sub MultipleSheetReminder()

    Dim ws As Worksheet
    Dim LastRow As Long
    Dim i As Integer
    Dim AlertLimit As Integer

    AlertLimit = 10  'リマインダーを表示する数量

    For Each ws In ThisWorkbook.Worksheets
        LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

        For i = 2 To LastRow
            If ws.Cells(i, 3).Value < AlertLimit Then
                MsgBox ws.Cells(i, 2).Value & "の在庫が" & AlertLimit & "未満です。"
            End If
        Next i
    Next ws

End Sub

2. リマインダーをメールで通知

リマインダーをExcel内でのメッセージボックスではなく、メールで通知する方法です。このためにはOutlookの参照設定が必要です。


Sub EmailReminder()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim LastRow As Long
    Dim i As Integer
    Dim AlertLimit As Integer

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    AlertLimit = 10

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

    For i = 2 To LastRow
        If ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value < AlertLimit Then
            With OutMail
                .To = "email@example.com"
                .Subject = "在庫警告"
                .Body = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value & "の在庫が" & AlertLimit & "未満です。"
                .Send
            End With
        End If
    Next i

    Set OutMail = Nothing
    Set OutApp = Nothing

End Sub

3. リマインダーの閾値を動的に設定

閾値を固定値ではなく、ユーザーが動的に設定できるようにする方法です。


Sub DynamicLimitReminder()

    Dim LastRow As Long
    Dim i As Integer
    Dim AlertLimit As Integer

    AlertLimit = InputBox("リマインダーを表示する数量を入力してください。")

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

    For i = 2 To LastRow
        If ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value < AlertLimit Then
            MsgBox ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value & "の在庫が" & AlertLimit & "未満です。"
        End If
    Next i

End Sub

まとめ

Excel VBAを利用してインベントリチェックのリマインダーを設定する方法を学びました。基本的なコードから応用例まで、ビジネスのニーズに応じてカスタマイズして使用することができます。これを機に、VBAを活用して業務効率化を図ってみてはいかがでしょうか。

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

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

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

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

コメント

コメントする

目次