У меня есть этот код. Он перебирает список для критериев фильтрации, а затем, если никакие данные для его выбора не отображают все данные снова и не переходят к следующим критериям. Если он показывает данные, они заканчиваются (slDown) и выбирают все отображаемые данные, копируют их и вставляют в другой рабочий лист.Авто фильтр для выбора только видимых строк
Сценарий очистки очищает любые пустые строки и столбцы, а затем возвращается к исходной таблице данных и удаляет данные, выбранные для копии.
Проблема в том, что есть только одна строка. Он перемещается в строку с данными, но когда я заканчиваю (xlDown), он полностью отходит до нижней части, а затем паста заставляет замораживать макрос.
Я вложил другую инструкцию if для захвата, если есть только одна строка данных, но я не могу заставить ее функционировать правильно. Любые предложения по вложенному оператору if?
Dim criteria As String
Dim F As Range
Set Rng = Sheets("Reference").Range("W2:W36")
For Each F In Rng
criteria = F
ActiveSheet.Range("$AV$1").AutoFilter Field:=48, Criteria1:="=*BULK SUBSERVIENT*", Operator:=xlAnd
ActiveSheet.Range("$K$1").AutoFilter Field:=11, Criteria1:=criteria
Range("A2:CM" & ActiveSheet.UsedRange.Rows.Count + 1) _
.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Select
If ActiveCell.Value = vbNullString Then
ActiveSheet.ShowAllData
Else
If (ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell)) = 2 Then
'Range(Selection).Select
Selection.Copy
Sheets("Bulk Subservient").Select
ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Call cleanup
Else
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Bulk Subservient").Select
ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Call cleanup
End If
End If
Next F
Спасибо, что поделились своим решением. Если вы подождите 48 часов, вы можете вернуться и пометить его как ответ на свой вопрос. – Jeeped