Поломался простой макрос, не могу понять как исправить. Выдаёт ошибку object variable or with block variable not set Суть макроса - нахождение ячейки и перенос всей строки на другой лист.
[vba]
Код
Sub MoveMat() Dim i As Integer Dim ItemName i = 1 ItemName = Sheets("123").Cells(i, 1) Do While ItemName <> " " And ItemName <> Empty i = i + 1 Range("A:A").Find("Материал").Select Rows(ActiveCell.Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.count, "A").End(xlUp).Offset(1) Loop End Sub
[/vba]
Ошибка в строке Range("A:A").Find("Материал").Select
При этом перенос строк работает. [moder]Дайте теме более конкретное название в соответствии с Правилами форума[/moder]
Приветствую!
Поломался простой макрос, не могу понять как исправить. Выдаёт ошибку object variable or with block variable not set Суть макроса - нахождение ячейки и перенос всей строки на другой лист.
[vba]
Код
Sub MoveMat() Dim i As Integer Dim ItemName i = 1 ItemName = Sheets("123").Cells(i, 1) Do While ItemName <> " " And ItemName <> Empty i = i + 1 Range("A:A").Find("Материал").Select Rows(ActiveCell.Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.count, "A").End(xlUp).Offset(1) Loop End Sub
[/vba]
Ошибка в строке Range("A:A").Find("Материал").Select
При этом перенос строк работает. [moder]Дайте теме более конкретное название в соответствии с Правилами форума[/moder]x0r
Сообщение отредактировал x0r - Четверг, 28.05.2015, 14:57
У Вас просто нет в столбце А значения "Материал". Макрос его не находит и дает ошибку. В смысл Вашего кода не вникал, просто повесил пропуск ошибки [vba]
Код
Sub MoveMat() Dim i As Integer Dim ItemName i = 1 ItemName = Sheets("123").Cells(i, 1) Do While ItemName <> " " And ItemName <> Empty i = i + 1 On Error Resume Next Rows(Range("A:A").Find("Материал").Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1) Loop End Sub
[/vba]
У Вас просто нет в столбце А значения "Материал". Макрос его не находит и дает ошибку. В смысл Вашего кода не вникал, просто повесил пропуск ошибки [vba]
Код
Sub MoveMat() Dim i As Integer Dim ItemName i = 1 ItemName = Sheets("123").Cells(i, 1) Do While ItemName <> " " And ItemName <> Empty i = i + 1 On Error Resume Next Rows(Range("A:A").Find("Материал").Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1) Loop End Sub
А разве это "мудреный" код не упадет в замкнутый цикл? Судя по условию он либо не войдет в цикл, либо и будет его гонять, пока не вывалится с ошибкой
А разве это "мудреный" код не упадет в замкнутый цикл? Судя по условию он либо не войдет в цикл, либо и будет его гонять, пока не вывалится с ошибкойKSV
Sub MoveMat() Application.ScreenUpdating = 0 r1_ = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To r1_ If Range("A" & i) = "Материал" Then Rows(i).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1) End If Next i Application.ScreenUpdating = 1 End Sub
[/vba]
Такой вариант [vba]
Код
Sub MoveMat() Application.ScreenUpdating = 0 r1_ = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To r1_ If Range("A" & i) = "Материал" Then Rows(i).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1) End If Next i Application.ScreenUpdating = 1 End Sub