【편집중 기사】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
Reference
이 문제에 관하여(【편집중 기사】Excel로 작성한 시험서의 입력에 실수가 없는지를 확인하는 매크로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tono5/items/1066ad93e8f2c2198f4a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)