Добрый день, пользуюсь макросом на перенос строк по условию, но обнаружил ошибку. Ошибка заключается в следующем, при отсутствии данных на любом из листов (Выгрузка, Добавка, Мини) с которых требуется сделать перенос, макрос выдает ошибку. В примере данные присутствую на всех 3 листах, для того чтобы увидеть ошибку необходимо удалить числовые значения с любого из листов (Выгрузка, Добавка, Мини) Как можно исправить код чтобы при отсутствии данных на листе он просто пропускал его и приступал к следующему. Пример прикрепил, в нем рабочий макрос.
Добрый день, пользуюсь макросом на перенос строк по условию, но обнаружил ошибку. Ошибка заключается в следующем, при отсутствии данных на любом из листов (Выгрузка, Добавка, Мини) с которых требуется сделать перенос, макрос выдает ошибку. В примере данные присутствую на всех 3 листах, для того чтобы увидеть ошибку необходимо удалить числовые значения с любого из листов (Выгрузка, Добавка, Мини) Как можно исправить код чтобы при отсутствии данных на листе он просто пропускал его и приступал к следующему. Пример прикрепил, в нем рабочий макрос.Netsky
Sub Макрос20() Worksheets("Вырезанные").Activate Dim Sht As Worksheet Dim iLastRow As Long Dim iLR As Long Dim i As Long For Each Sht In Worksheets If Sht.Name = "Выгрузка" Or Sht.Name = "Добавка" Or Sht.Name = "Мини" Then On Error Resume Next With Sht iLastRow = Cells(Rows.Count, "K").End(xlUp).Row + 1 .Range("A1").CurrentRegion.AutoFilter 11, ">0", xlAnd, "<50000" .AutoFilter.Range.Offset(1).SpecialCells(12).Copy Cells(iLastRow, 1) .AutoFilter.Range.Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter.Range.AutoFilter End With End If Next End Sub
[/vba]
Добрый день. Можно пропускать ошибку [vba]
Код
Sub Макрос20() Worksheets("Вырезанные").Activate Dim Sht As Worksheet Dim iLastRow As Long Dim iLR As Long Dim i As Long For Each Sht In Worksheets If Sht.Name = "Выгрузка" Or Sht.Name = "Добавка" Or Sht.Name = "Мини" Then On Error Resume Next With Sht iLastRow = Cells(Rows.Count, "K").End(xlUp).Row + 1 .Range("A1").CurrentRegion.AutoFilter 11, ">0", xlAnd, "<50000" .AutoFilter.Range.Offset(1).SpecialCells(12).Copy Cells(iLastRow, 1) .AutoFilter.Range.Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter.Range.AutoFilter End With End If Next End Sub
еще вариант проверки к-ва заполненных ячеек: [vba]
Код
Sub Макрос20() Worksheets("Вырезанные").Activate Dim Sht As Worksheet Dim iLastRow As Long Dim iLR As Long Dim i As Long
For Each Sht In Worksheets If Sht.Name = "Выгрузка" Or Sht.Name = "Добавка" Or Sht.Name = "Мини" Then With Sht If Application.CountA(.Range("A1").CurrentRegion) > 1 Then iLastRow = Cells(Rows.Count, "K").End(xlUp).Row + 1 .Range("A1").CurrentRegion.AutoFilter 11, ">0", xlAnd, "<50000" .AutoFilter.Range.Offset(1).SpecialCells(12).Copy Cells(iLastRow, 1) .AutoFilter.Range.Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter.Range.AutoFilter End If End With End If Next End Sub
[/vba]
еще вариант проверки к-ва заполненных ячеек: [vba]
Код
Sub Макрос20() Worksheets("Вырезанные").Activate Dim Sht As Worksheet Dim iLastRow As Long Dim iLR As Long Dim i As Long
For Each Sht In Worksheets If Sht.Name = "Выгрузка" Or Sht.Name = "Добавка" Or Sht.Name = "Мини" Then With Sht If Application.CountA(.Range("A1").CurrentRegion) > 1 Then iLastRow = Cells(Rows.Count, "K").End(xlUp).Row + 1 .Range("A1").CurrentRegion.AutoFilter 11, ">0", xlAnd, "<50000" .AutoFilter.Range.Offset(1).SpecialCells(12).Copy Cells(iLastRow, 1) .AutoFilter.Range.Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter.Range.AutoFilter End If End With End If Next End Sub