Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Формирование базы данных выписанных накладных, макрос дает сбой
 
Добрый день уважаемые форумчане. Пытаюсь автоматизировать выписку накладных с формированием базы данных (выписанных ранее накладных).
Порывшись на форуме кое-что слепил, однако почему-то ломается макрос. Не  могу понять в чем проблема. Прошу помощи в подправке макроса.
Пример выкладываю. Заранее спасибо за помощь. Ошибка появляется при нажатии на кнопку "Провести"
 
Код
     For Each rg In Range(Cells(10, 2), Cells(iLastRow - 1, 2)) 'Range("C10:C26")
         If rg = True Then 'End Sub  'если значение в ячейке =
             Else
             Worksheets("Свод").Cells(i, 10) = Cells(rg + 9, 15).Value

В первой строке вы получаете объект Range, а в третьей - пытаетесь к объекту прибавить число. Вот вам и ошибка.
Вы определитесь, что к чему хотите прибавить. Число к значению ячейки rg (там, похоже, текст вообще-то)? число к номеру строки ячейки?  тода вместо rg пишите rg.Row
F1 творит чудеса
 
Поменяйте Cells(rg + 9... на Cells(rg.Row + 9...
Дальше не смотрел.8)
Я сам - дурнее всякого примера! ...
 
не, все не так. там ошибка в определении диапазона. В него попадает заголовок столбца с "№".
Замените вот эту строчку
Код
iLastRow = [C8].End(xlDown).Row + 1
на вот эту
Код
iLastRow = Application.Max([C8].End(xlDown).Row + 1, 10)
и вот эту
Код
For Each rg In Range(Cells(10, 2), Cells(iLastRow-1, 2))
на вот эту
Код
For Each rg In Range(Cells(10, 2), Cells(iLastRow, 2))
F1 творит чудеса
 
Спасибо за ответы, но это не решает проблемы. Поправив согласно совета столкнулся с проблемой бега на месте. Т.е. все происходит в одной ячейке не переходя в позицию № 2,3 и т.п.
 
ну тогда так
Код
iLastRow = Application.Max([C27].End(xlUp).Row, 10)

всё упирается в определение последней строчки. Если она не может быть больше 26, то подойдет строка выше (от С27 прыгаем вверх до первой непустой ячейки)
F1 творит чудеса
 
Если поменять только строчку
iLastRow = Application.Max([C27].End(xlUp).Row, 10)
то ошибка остается.
Когда меняю еще строку
For Each rg In Range(Cells(10, 2), Cells(iLastRow, 2))
ошибка пропадает, но все равно по накопительной не идет. Все работает только в ячейках C10:M10
 
Цитата
Максим Владимиров написал: но все равно по накопительной не идет. Все работает только в ячейках C10:M10
Максим, вы бы хоть объясняли, что идет и где, а что - нет.
У меня на листе Свод всё дописывается. На листе Накладная при использовании формы позиции в п.1 перезаписывались, а не добавлялись.
Поменял в форме расчет iLastRow по аналогии с макросом проведения
Код
iLastRow = [C27].End(xlUp).Row + 1

Все работает.
F1 творит чудеса
 
Спасибо, все работает. Прошу закрыть тему.
Страницы: 1
Читают тему (гостей: 1)