Excel Vba - Динамический диапазон фильтра Удалить - PullRequest
0 голосов
/ 18 октября 2011

У меня есть следующий блок кода для устранения различных ошибок и назначения описания кода ошибки для данных.Он работает нормально, пока фильтр возвращает результат.Если это не так, он удаляет строку заголовка.Как я могу предотвратить это?Заранее спасибо.

Sheets("Tempsheet").Select
Range("A1:K1").AutoFilter
Range("A1:K1").AutoFilter Field:=5, Criteria1:="0", Criteria2:=0
Range("K2:K" & Range("A" & Rows.Count).End(xlUp).Row).Formula = "Excluded: $0.00 Amount"
Range("A2:K" & Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Copy
Sheets("Excluded").Select
Range("A2").PasteSpecial
Sheets("Tempsheet").Select
Range("A2:K" & Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Delete
Sheets("Tempsheet").AutoFilterMode = False

Ответы [ 3 ]

3 голосов
/ 18 октября 2011

Если фильтр не возвращает никаких данных, то Range("A2:K" & Range("A" & Rows.Count).End(xlUp).Row) вернет строку 1, поэтому проверьте на row > 1 перед выполнением удаления

If Range("A2:K" & Range("A" & Rows.Count).End(xlUp).Row).Row > 1 then
    ... .Delete
End If
1 голос
/ 18 октября 2011

Что-то вроде этого кода, который проверяет результат фильтра, должно сделать это

Dim ws As Worksheet
Dim ws2 As Worksheet
Set ws = Sheets("Tempsheet")
Set ws2 = Sheets("Excluded")
Set rng1 = ws.Range(ws.[a1], ws.Cells(Rows.Count, "k").End(xlUp))
rng1.AutoFilter Field:=5, Criteria1:="0", Criteria2:=0
If rng1.SpecialCells(xlVisible).Rows.Count > 1 Then
    ws.Range("K2:K" & Range("A" & Rows.Count).End(xlUp).Row).Formula = "Excluded: $0.00 Amount"
    ws.Range("A2:K" & Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Copy
    ws2.[a2].PasteSpecial Paste:=xlPasteValues
    rng1.Offset(1, 0).Resize(rng1.SpecialCells(xlVisible).Rows.Count - 1).EntireRow.Delete
End If
Sheets("Tempsheet").AutoFilterMode = False
0 голосов
/ 18 октября 2011
Sheets("Tempsheet").Select
Range("A1:K1").AutoFilter
Range("A1:K1").AutoFilter Field:=5, Criteria1:="0", Criteria2:=0
Range("K2:K" & Range("A" & Rows.Count).End(xlUp).Row).Formula = "Excluded: $0.00 Amount"
Range("A2:K" & Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Copy
Sheets("Excluded").Select
Range("A2").PasteSpecial
Sheets("Tempsheet").Select

if Range("A" & Rows.Count).End(xlUp).Row > 1 then
  Range("A2:K" & Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Delete
end if

Sheets("Tempsheet").AutoFilterMode = False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...