2017-09-28 7 views
1

データがあり、フィルタリングを行っています。今私は最後の表示行まで行全体を削除したいと思います。また、私はこのケースで私のヘッダー(行5)を含めたくない。私は以下のコードを回避する方法を確認していない:フィルタリングされたデータを選択し、ヘッダーを除いて最後に表示された行に削除

Dim row1 As Variant 
row1 = Rows(5).Offset(1, 0) 
lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 
Rows("row1:" & lastrow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
+1

'「行1:」に置き換え'と 'ROW1&「を:" ' –

答えて

0

あなたはSpecialCellsで作業したときにエラーハンドラを追加する必要があります。

Sub DeleteVisibleRows() 
    With ActiveSheet 
     On Error Resume Next 
     .Range("A5", .Range("A" & .Rows.Count).End(xlUp)).Offset(1).EntireRow _ 
     .SpecialCells(xlCellTypeVisible).Delete 
     On Error GoTo 0 
    End With 
End Sub 
+0

が、私はエラーハンドラのためのなぜ必要性を理解できるコードをありがとうところで –

+0

'それはをdoesnの場合SpecialCells'は、エラーがスローされます!任意の細胞を見つける。 –

0

これを試してみてください...あなただけ表示される行を削除したい場合は、あなたが持っている場合

Dim lr As Long 
lr = Cells(Rows.Count, 1).End(xlUp).Row 
Range("A6:A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Delete 

はこれを試してみてくださいデータセットにフィルタを適用しました。

Dim lr As Long 
lr = Cells(Rows.Count, 1).End(xlUp).Row 
If ActiveSheet.FilterMode Then 
    On Error Resume Next 
    Range("A6:A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
End If 
0

以下を試してください:

Sub test() 

    Dim lastrow As Long 
    Dim rng As Range 

    lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 

    Set rng = Rows("6:" & lastrow) 

    rng.Delete Shift:=xlUp 

    End Sub 
関連する問題