Добрый день. Написал макрос для печати нескольких копий листов из книги в зависимости от количества, устанавливаемого в ячейках N44-N62 (в данных ячейках формула: если сумма > 0, то печатается определенное количество).
Проблема в том, что печатаются только 2 первых листа с необходимым количеством копий, а потом макрос останавливается или без объяснения причин или с ошибкой 400. Можно ли это исправить?
Добрый день. Написал макрос для печати нескольких копий листов из книги в зависимости от количества, устанавливаемого в ячейках N44-N62 (в данных ячейках формула: если сумма > 0, то печатается определенное количество).
Проблема в том, что печатаются только 2 первых листа с необходимым количеством копий, а потом макрос останавливается или без объяснения причин или с ошибкой 400. Можно ли это исправить?Garik007
KuklP, файл смогу только завтра приложить, только как-то странно получается условия формирования Range("N44")... везде одинаковы, а печать идет только первых двух. Если убрать 44 и 45 будет без проблем печатать 46 и 47, убрать 46 и 47 будет нормально печатать 48 и 49 и так далее, но только всегда первые 2 листа. А где его взять этот родительский объект? Указание вручную цифр на листе ситуацию вроде не меняет, завтра попробую вместо Range("N44")... указать конкретные цифры в самом макросе. Листов около сотни и вручную указывать при печати количество экземпляров каждого как-то муторно получается.
UPD. А вот и сам файл.
KuklP, файл смогу только завтра приложить, только как-то странно получается условия формирования Range("N44")... везде одинаковы, а печать идет только первых двух. Если убрать 44 и 45 будет без проблем печатать 46 и 47, убрать 46 и 47 будет нормально печатать 48 и 49 и так далее, но только всегда первые 2 листа. А где его взять этот родительский объект? Указание вручную цифр на листе ситуацию вроде не меняет, завтра попробую вместо Range("N44")... указать конкретные цифры в самом макросе. Листов около сотни и вручную указывать при печати количество экземпляров каждого как-то муторно получается.
Ну так у Вас там ноль в третьем кол-ве. Попробуйте так, в модуль листа "список":
Sub печать() Dim i& With Me For i = 2To6 If .Cells(i, 14).Value > 0Then _
Sheets(.Cells(i, 11).Value).PrintOut Copies:=.Cells(i, 14) Next EndWith EndSub
Ну так у Вас там ноль в третьем кол-ве. Попробуйте так, в модуль листа "список":
Sub печать() Dim i& With Me For i = 2To6 If .Cells(i, 14).Value > 0Then _
Sheets(.Cells(i, 11).Value).PrintOut Copies:=.Cells(i, 14) Next EndWith EndSub
KuklP, ноль мне кажется не основная причина, менял и в строке формул все на значения больше ноля, и принудительно в макросе везде прописывал количество копий больше ноля, но больше двух листов за раз не печатает. Если добавить Вашу формулу в модуль листа выдает ошибку "Invalid use of Me keyword".
KuklP, ноль мне кажется не основная причина, менял и в строке формул все на значения больше ноля, и принудительно в макросе везде прописывал количество копий больше ноля, но больше двух листов за раз не печатает. Если добавить Вашу формулу в модуль листа выдает ошибку "Invalid use of Me keyword".Garik007
Если добавить Вашу формулу в модуль листа выдает ошибку "Invalid use of Me keyword".
Чушь собачья. Значит Вы не в модуль листа его сунули, а в отдельный модуль. См. скрин. Макрос отработал до конца, считайте к-во документов в столбце и в диспетчере печати.
Если добавить Вашу формулу в модуль листа выдает ошибку "Invalid use of Me keyword".
Чушь собачья. Значит Вы не в модуль листа его сунули, а в отдельный модуль. См. скрин. Макрос отработал до конца, считайте к-во документов в столбце и в диспетчере печати.KuklP
KuklP, да все работает, спасибо большое, смутило слово модуль в Вашем ответе, поэтому и добавил не на лист, а создал модуль в книге, поэтому и вылезала ошибка, не силен еще в ВБА.
KuklP, да все работает, спасибо большое, смутило слово модуль в Вашем ответе, поэтому и добавил не на лист, а создал модуль в книге, поэтому и вылезала ошибка, не силен еще в ВБА.Garik007