| 
    
     |  | H17が先頭にある場合と言う条件なら Option Explicit
 
 Public Sub Test()
 
 Dim Rw As Long
 
 Application.ScreenUpdating = False
 
 For Rw = Range("H65536").End(xlUp).Row To 1 Step -1
 With Range("H" & Rw)
 '      If InStr(.Value, "H17*") > 0 Then .EntireRow.Delete
 '先頭にH17が有る場合に削除
 If InStr(1, .Value, "H17", vbBinaryCompare) = 1 Then
 .EntireRow.Delete
 End If
 '文字列中の何処かにH17が有る場合に削除
 '      If InStr(1, .Value, "H17", vbBinaryCompare) > 0 Then
 '        .EntireRow.Delete
 '      End If
 End With
 Next Rw
 
 Application.ScreenUpdating = True
 
 End Sub
 
 ただ、削除の速度を上げる為、以下の様な事もします
 
 Public Sub Sample()
 
 'データ列数(例えば基準位置A列〜I列までデータが有る場合)
 Const clngColumns As Long = 9
 '処理対象列位置(例えばH列、A列からの列Offset)
 Const clngCompare As Long = 7
 
 Dim i As Long
 Dim lngRows As Long
 Dim rngList As Range
 Dim vntData As Variant
 Dim lngDelete() As Long
 Dim lngCount As Long
 Dim strProm As String
 
 'Listの左上隅セル位置を基準として設定
 Set rngList = ActiveSheet.Cells(1, "A")
 With rngList
 'データ行数を取得
 lngRows = .Offset(65536 - .Row, _
 clngCompare).End(xlUp).Row - .Row + 1
 'データが無い場合
 If lngRows <= 1 Then
 strProm = "データが有りません"
 GoTo Wayout
 End If
 'データを配列に取得
 vntData = .Offset(, clngCompare).Resize(lngRows + 1).Value
 '削除Flag用の配列を確保
 ReDim lngDelete(1 To lngRows, 1 To 1)
 End With
 
 'H17の時に削除Flagを入れる
 For i = 1 To lngRows
 '先頭にH17が有る場合に削除
 If InStr(1, vntData(i, 1), "H17", vbBinaryCompare) = 1 Then
 lngDelete(i, 1) = 1
 lngCount = lngCount + 1
 End If
 Next i
 
 '画面更新を停止
 '  Application.ScreenUpdating = False
 
 With rngList
 '削除Flagを出力
 .Offset(, clngColumns).Resize(lngRows).Value = lngDelete
 '削除FlagをKeyに整列
 .Resize(lngRows, clngColumns + 1).Sort _
 Key1:=.Offset(, clngColumns), Order1:=xlAscending, _
 Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
 Orientation:=xlTopToBottom, SortMethod:=xlStroke
 If lngCount > 0 Then
 'Flag行の削除
 .Offset(lngRows - lngCount).Resize(lngCount).EntireRow.Delete
 End If
 '削除Flagを削除
 .Offset(, clngColumns).EntireColumn.Delete
 End With
 
 strProm = "処理が完了しました"
 
 Wayout:
 
 '画面更新を再開
 Application.ScreenUpdating = True
 
 Set rngList = Nothing
 
 MsgBox strProm, vbInformation
 
 End Sub
 
 |  |