VBAで勤怠情報のデータからエラーを検出してT列に表示する仕組みを作成するには、次の内容が必要です。



必要なもの


1. 「data」シート - 勤怠システムから毎月出力されるデータが格納されるシート。毎月新しいデータが上書きされる想定。



2. 「エラー一覧」シート - エラー条件とエラー内容が記載されたシート。


B列 - エラー内容の一覧(12種類)。


C列 - エラーの条件を定義。条件はVBAで判別できるような数式や関数形式で入力する。




3. エラーチェック関数 - 各エラー条件に応じた検出ロジックをVBAで記述する。




作成方法


以下にVBAコードの流れと手順を示します。


1. 初期設定


「VBA開発」タブで「Visual Basic」エディタを開き、標準モジュールを挿入します。


エラー検出マクロを作成します。



2. VBAコードの記述


Sub エラー検出()

    Dim wsData As Worksheet, wsErrorList As Worksheet

    Dim lastRow As Long, i As Long, j As Long

    Dim errorDescription As String

    Dim errorCondition As String


    ' シートの参照設定

    Set wsData = ThisWorkbook.Sheets("data")

    Set wsErrorList = ThisWorkbook.Sheets("エラー一覧")


    ' 最終行を取得

    lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row


    ' T列をクリア

    wsData.Range("T2:T" & lastRow).ClearContents


    ' エラー一覧をループしてデータをチェック

    For i = 2 To lastRow

        Dim errorMessages As String

        errorMessages = ""


        ' エラー一覧の行をループして各エラーをチェック

        For j = 2 To wsErrorList.Cells(wsErrorList.Rows.Count, "B").End(xlUp).Row

            errorDescription = wsErrorList.Cells(j, "B").Value

            errorCondition = wsErrorList.Cells(j, "C").Value


            ' 条件に基づきエラー判定

            If Evaluate(Replace(errorCondition, "セル", wsData.Cells(i, "A").Address)) Then

                If errorMessages <> "" Then errorMessages = errorMessages & "、"

                errorMessages = errorMessages & errorDescription

            End If

        Next j


        ' T列にエラー内容を表示

        If errorMessages <> "" Then

            wsData.Cells(i, "T").Value = errorMessages

        End If

    Next i


    MsgBox "エラーチェックが完了しました。"

End Sub


ここから先は

3,877字

¥ 1,000

期間限定!Amazon Payで支払うと抽選で
Amazonギフトカード5,000円分が当たる

この記事が気に入ったらチップで応援してみませんか?