このツールに関しては下記のタイトルのコードは以下の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
targetDate = CStr(vbs_WorkStartDate)
' 最終行(A列基準)
lastRow = srcSheet.Cells(srcSheet.Rows.Count, "G").End(xlUp).Row
If lastRow <= 3 Then
MsgBox "データ行が存在しません。"
WScript.Quit
End If
' 既存フィルタ解除
If srcSheet.AutoFilterMode Then
srcSheet.AutoFilterMode = False
End If
' 表全体にフィルタ設定(見出し行3行目)
srcSheet.Range("A3:G" & lastRow).AutoFilter
' ★ 文字列で部分一致フィルタ
srcSheet.Range("A3:G" & lastRow).AutoFilter 7, "*" & targetDate & "*"
On Error Resume Next
srcSheet.Range("G4:G" & lastRow).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

