У меня проблемы с удалением некоторых строк с помощью VBA.
У меня есть данные, организованные в строки в столбцах A - K. В столбце K есть счетчик;когда он превышает 1, необходимо удалить всю строку.Я установил следующий код;и ожидал, что он отфильтрует столбец K для чего-либо, превышающего 1. Если он обнаружит, что имеется более 1 строки (строка 1 является заголовком), он удалит все видимое, в противном случае он просто удалит критерии из фильтра.
Однако первое окно сообщения возвращает значение 2900 (правильное значение), а второе окно сообщения возвращает значение 1, и я понятия не имею, почему.Следовательно, ни одна из строк со столбцом K, превышающим 1 (их около 2000), не удаляется.
Видимые строки в начале макроса определены как Long.
With MySheet
'Find new lastrow
lRowDbMsNew = .Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).ROW
.Range("A:K").Calculate
MsgBox ("The last row in the data is " & lRowDbMsNew)
.Range("A1:A" & lRowDbMsNew).AutoFilter Field:=11, Criteria1:=">1"
VisibleRows = .Range("A1:A" & lRowDbMsNew).SpecialCells(xlCellTypeVisible).Rows.Count
MsgBox ("Number of visible rows: " & VisibleRows)
If VisibleRows > 1 Then
.Range("A2:A" & lRowDbMsNew).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.Range("A1:K" & lRowDbMsNew).AutoFilter Field:=11
Else
.Range("A1:K" & lRowDbMsNew).AutoFilter Field:=11
End If
End With