Добрый день. Написал макрос для печати нескольких копий листов из книги в зависимости от количества, устанавливаемого в ячейках N44-N62 (в данных ячейках формула: если сумма > 0, то печатается определенное количество). [vba]
Код
Sub печать() Application.EnableEvents = False If Application.Dialogs(xlDialogPrint).Show = True Then Worksheets("a2-1").PrintOut Copies:=Range("N44").Value Worksheets("b10").PrintOut Copies:=Range("N45").Value Worksheets("b12-1").PrintOut Copies:=Range("N46").Value Worksheets("b18-1").PrintOut Copies:=Range("N47").Value Worksheets("b23-1").PrintOut Copies:=Range("N48").Value Worksheets("c55").PrintOut Copies:=Range("N49").Value Worksheets("c55-1").PrintOut Copies:=Range("N50").Value Worksheets("c11").PrintOut Copies:=Range("N51").Value Worksheets("d13-1").PrintOut Copies:=Range("N52").Value Worksheets("d13-2").PrintOut Copies:=Range("N53").Value Worksheets("d7-1").PrintOut Copies:=Range("N54").Value Worksheets("e9").PrintOut Copies:=Range("N55").Value Worksheets("e13-3").PrintOut Copies:=Range("N56").Value Worksheets("e26").PrintOut Copies:=Range("N57").Value Worksheets("f5-3").PrintOut Copies:=Range("N58").Value Worksheets("f5-4").PrintOut Copies:=Range("N59").Value Worksheets("f9-3").PrintOut Copies:=Range("N60").Value Worksheets("g9-4").PrintOut Copies:=Range("N61").Value Worksheets("g10-2").PrintOut Copies:=Range("N62").Value End If Application.EnableEvents = True End Sub
[/vba] Проблема в том, что печатаются только 2 первых листа с необходимым количеством копий, а потом макрос останавливается или без объяснения причин или с ошибкой 400. Можно ли это исправить?
Добрый день. Написал макрос для печати нескольких копий листов из книги в зависимости от количества, устанавливаемого в ячейках N44-N62 (в данных ячейках формула: если сумма > 0, то печатается определенное количество). [vba]
Код
Sub печать() Application.EnableEvents = False If Application.Dialogs(xlDialogPrint).Show = True Then Worksheets("a2-1").PrintOut Copies:=Range("N44").Value Worksheets("b10").PrintOut Copies:=Range("N45").Value Worksheets("b12-1").PrintOut Copies:=Range("N46").Value Worksheets("b18-1").PrintOut Copies:=Range("N47").Value Worksheets("b23-1").PrintOut Copies:=Range("N48").Value Worksheets("c55").PrintOut Copies:=Range("N49").Value Worksheets("c55-1").PrintOut Copies:=Range("N50").Value Worksheets("c11").PrintOut Copies:=Range("N51").Value Worksheets("d13-1").PrintOut Copies:=Range("N52").Value Worksheets("d13-2").PrintOut Copies:=Range("N53").Value Worksheets("d7-1").PrintOut Copies:=Range("N54").Value Worksheets("e9").PrintOut Copies:=Range("N55").Value Worksheets("e13-3").PrintOut Copies:=Range("N56").Value Worksheets("e26").PrintOut Copies:=Range("N57").Value Worksheets("f5-3").PrintOut Copies:=Range("N58").Value Worksheets("f5-4").PrintOut Copies:=Range("N59").Value Worksheets("f9-3").PrintOut Copies:=Range("N60").Value Worksheets("g9-4").PrintOut Copies:=Range("N61").Value Worksheets("g10-2").PrintOut Copies:=Range("N62").Value End If Application.EnableEvents = True End Sub
[/vba] Проблема в том, что печатаются только 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")... указать конкретные цифры в самом макросе. Листов около сотни и вручную указывать при печати количество экземпляров каждого как-то муторно получается.
Ну так у Вас там ноль в третьем кол-ве. Попробуйте так, в модуль листа "список": [vba]
Код
Sub печать() Dim i& With Me For i = 2 To 6 If .Cells(i, 14).Value > 0 Then _ Sheets(.Cells(i, 11).Value).PrintOut Copies:=.Cells(i, 14) Next End With End Sub
[/vba]
Ну так у Вас там ноль в третьем кол-ве. Попробуйте так, в модуль листа "список": [vba]
Код
Sub печать() Dim i& With Me For i = 2 To 6 If .Cells(i, 14).Value > 0 Then _ Sheets(.Cells(i, 11).Value).PrintOut Copies:=.Cells(i, 14) Next End With End Sub
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