このツールに関しては下記のタイトルのコードは以下の2つをご確認ください。
タブメニューのウィンドウ④(前編):HTAのコード
タブメニューのウィンドウ⑤(後編):VBScriptコード
タブメニューのウィンドウ⑥(原因調査):HTAのコード
コードを見直したところ、このあとのフィルタが0件なら終了しているのだから
最初の所でフィルターの検知は不要かと思いました。
'If srcSheet.AutoFilterMode = False Then
' MsgBox "オートフィルタが設定されていません。"
' srcBook.Close False
' outBook.Close False
' xlApp.Quit
' WScript.Quit
'End If
また、下記の場合はだとG41行までしか対応できないのでこれもコードが不十分かと思いました。
せっかくlastRowで最終行を取得しているのだから活用すべきだかと思いました
srcSheet.Range("A4").AutoFilter 7, "*" & targetDate & "*"
On Error Resume Next
srcSheet.Range("G4:G41").SpecialCells xlCellTypeVisible
If Err.Number <> 0 Then
MsgBox "対象日付のデータがありません。"
Err.Clear
srcBook.Close False
outBook.Close False
xlApp.Quit
WScript.Quit
End If
On Error GoTo 0
lastRow = srcSheet.Cells(srcSheet.Rows.Count, "G").End(xlUp).Row
'======================================================================================
'「作業手続き申請書」(シート名)でオートフィルタの設定を確認する
'======================================================================================
Const xlCellTypeVisible = 12
Const xlUp = -4162
dataStartRow = 4
' サンプルコードのための動作確認のためフィルタリングの日付を「2025/12/25」を固定化
targetDate = vbs_WorkStartDate
srcSheet.Range("A4").AutoFilter 7, "*" & targetDate & "*"
lastRow = srcSheet.Cells(srcSheet.Rows.Count, "G").End(xlUp).Row
On Error Resume Next
srcSheet.Range("G4:G" & lastRow).SpecialCells xlCellTypeVisible
'srcSheet.Range("G4:G41").SpecialCells xlCellTypeVisible
If Err.Number <> 0 Then
MsgBox "対象日付のデータがありません。"
Err.Clear
srcBook.Close False
outBook.Close False
xlApp.Quit
WScript.Quit
End If
On Error GoTo 0
