【편집중 기사】Excel로 작성한 시험서의 입력에 실수가 없는지를 확인하는 매크로

작성 목적



시험서에 입력 실수를 자동 확인

체크하는 시험서는 이하





시험서 규칙



실행 여부 열 규칙



・「아니오」의 경우 → 그 행에 값이 일절 들어 있지 않은 것을 확인한다
・「요」의 경우 → 스테이터스 열의 셀을 판정한다 (○: 입력되어 있는 것 ×: 입력되어 있지 않은 것)
・OK →【실시자】○|【실시 일시】○|【실시 환경】○|【Bug#】×|【Block#】×|【비고】○
・NG →【실시자】○|【실시 일시】○|【실시 환경】○|【Bug#】○|【Block#】×|【비고】○
・PEND →【실시자】○|【실시 일시】○|【실시 환경】×|【Bug#】×|【Block#】×|【비고】○
・BLOCK→【실시자】○|【실시 일시】×|【실시 환경】×|【Bug#】×|【Block#】○|【비고】○
· N/T → 상태 열에 N/T가 없는지 확인

코드


Sub CheckTestCase()

'試験書を指定するファイルダイアログ表示
'指定した試験書のオブジェクト変数へ格納
Dim TargetBook As String
TargetBook = Application.GetOpenFilename("Excel ブック,*.xls?")
If TargetBook = "False" Then Exit Sub
Workbooks.Open TargetBook

'=====================
'Debug→TargetBook
Debug.Print "TargetBookは【" & TargetBook & "】" '指定したファイル名までのPATHが表示される


'その試験書の全シートに対して実行していく
Dim NumOfSheets As Long
Dim NameOfSheet As String
Dim DoYouExecute As String
Dim LastRow As Long
Dim i As Long
Dim j As Long
Dim k As Long

NumOfSheets = ActiveWorkbook.Worksheets.Count

'=====================
'Debug→NumOfSheets
Debug.Print NumOfSheets '5 存在するシート数 表示

For i = 1 To NumOfSheets
L1:

If i > NumOfSheets Then
    Exit For
End If

Worksheets(i).Activate

LastRow = Cells(Rows.Count, 2).End(xlUp).Row
Debug.Print "最終行は " & LastRow & "です"

'シートが切り替わるタイミングで実施有無を確認させるダイアログを表示する

NameOfSheet = ActiveSheet.Name

'=====================
'Debug→NameOfSheet
Debug.Print NameOfSheet


DoYouExecute = MsgBox("【" & NameOfSheet & "】" & "の試験書チェックを" & vbCrLf & _
"実行しますか?", vbYesNo)

    '「いいえ」の場合→次のシートへループ
    If DoYouExecute = vbNo Then
        i = i + 1
        GoTo L1

    ElseIf DoYouExecute = vbYes Then
    '「はい」の場合→そのシート内で試験書チェック処理実行
        '実施可否の列をループする
            '「否」→その行に値が一切入っていないことを確認する
            For j = 3 To LastRow
                If Cells(j, 9).Value = "否" Then
                    For k = 10 To 16
                        If Cells(j, k).Value <> "" Then
                            Cells(j, k).Interior.ColorIndex = 46
                        End If
                    Next k

            '「要」→ステータス列のセルを判定する
                ElseIf Cells(j, 9).Value = "要" Then

                    'OK   →【実施者】○|【実施日時】○|【実施環境】○|【Bug#】×|【Block#】×|【備考】○
                    If Cells(j, 13).Value = "OK" Then
                        If Cells(j, 10).Value = "" Then
                            Cells(j, 10).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 11).Value = "" Then
                            Cells(j, 11).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 12).Value = "" Then
                            Cells(j, 12).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 14).Value <> "" Then
                            Cells(j, 14).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 15).Value <> "" Then
                            Cells(j, 15).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 16).Value = "" Then
                            Cells(j, 16).Interior.ColorIndex = 46
                        End If


                    'NG   →【実施者】○|【実施日時】○|【実施環境】○|【Bug#】○|【Block#】×|【備考】○
                    ElseIf Cells(j, 13).Value = "NG" Then
                        If Cells(j, 10).Value = "" Then
                            Cells(j, 10).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 11).Value = "" Then
                            Cells(j, 11).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 12).Value = "" Then
                            Cells(j, 12).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 14).Value = "" Then
                            Cells(j, 14).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 15).Value <> "" Then
                            Cells(j, 15).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 16).Value = "" Then
                            Cells(j, 16).Interior.ColorIndex = 46
                        End If

                    'PEND →【実施者】○|【実施日時】○|【実施環境】×|【Bug#】×|【Block#】×|【備考】○
                    ElseIf Cells(j, 13).Value = "PEND" Then
                        If Cells(j, 10).Value = "" Then
                            Cells(j, 10).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 11).Value = "" Then
                            Cells(j, 11).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 12).Value <> "" Then
                            Cells(j, 12).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 14).Value <> "" Then
                            Cells(j, 14).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 15).Value <> "" Then
                            Cells(j, 15).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 16).Value = "" Then
                            Cells(j, 16).Interior.ColorIndex = 46
                        End If

                    'BLOCK→【実施者】○|【実施日時】×|【実施環境】×|【Bug#】×|【Block#】○|【備考】○
                    ElseIf Cells(j, 13).Value = "BLOCK" Then
                        If Cells(j, 10).Value = "" Then
                            Cells(j, 10).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 11).Value <> "" Then
                            Cells(j, 11).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 12).Value <> "" Then
                            Cells(j, 12).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 14).Value <> "" Then
                            Cells(j, 14).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 15).Value = "" Then
                            Cells(j, 15).Interior.ColorIndex = 46
                        End If
                        If Cells(j, 16).Value = "" Then
                            Cells(j, 16).Interior.ColorIndex = 46
                        End If

                    'N/T  →ステータスの列にN/Tがないことを確認する
                    ElseIf Cells(j, 13).Value = "N/T" Then
                        Cells(j, 13).Interior.ColorIndex = 46

                    End If
                End If
             Next j
        End If
Next i

End Sub

좋은 웹페이지 즐겨찾기