列 F に「NHO_Global」が含まれていないすべての行を削除するために、以下のコードを見つけて変更しましたが、すべてが削除されます (ただし、ヘッダー行は残ります)。
何を間違えたのでしょうか。どうすれば修正できますか? 列 F に「NHO_Global」を含む行だけを残す必要があります (単純なフィルタリングでは目的に適わず、削除する必要があります)。
Sub KeepOnlyNHOGlobal()
Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long
Set ws = ActiveWorkbook.Sheets("NHO_Global")
lastRow = ws.Range("F" & ws.Rows.Count).End(xlUp).Row
Set rng = ws.Range("F1:F" & lastRow)
'Filter and delete all but the header row
With rng
.AutoFilter Field:=1, Criteria1:="<>NHO_GLOBAL"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
'Turn off the filters
ws.AutoFilterMode = False
End Sub
更新: フィルターがオンになっていること (何も適用されていないにもかかわらず) が問題であることが判明しました。フィルターをオフにすると、コードは期待どおりに実行されました。