Задача состоит в том чтобы нажав на кнопку выводились страницы на печать в соответствии с количеством в рядом стоящих ячеек P5:Q7
Оговорка. Я не знаю как устроен метод печати из экселя. Но знаю что есть два варианта.
1 когда он на печать отправляет каждую страницу отдельно и тогда процесс печати может растянутся во времени. 2 когда посылает пакетом сразу все тогда принтер выплевывает сразу все достаточно быстро. (таким методом отсылается на печать когда нажимаем ФАЙЛ/ПЕЧАТЬ/КОПИИ и задаем количество страниц) Так вот если есть вариант отправлять именно по принципу второго метода было бы идеально.
Спасибо.
Добрый день.
Задача состоит в том чтобы нажав на кнопку выводились страницы на печать в соответствии с количеством в рядом стоящих ячеек P5:Q7
Оговорка. Я не знаю как устроен метод печати из экселя. Но знаю что есть два варианта.
1 когда он на печать отправляет каждую страницу отдельно и тогда процесс печати может растянутся во времени. 2 когда посылает пакетом сразу все тогда принтер выплевывает сразу все достаточно быстро. (таким методом отсылается на печать когда нажимаем ФАЙЛ/ПЕЧАТЬ/КОПИИ и задаем количество страниц) Так вот если есть вариант отправлять именно по принципу второго метода было бы идеально.
Имена листов сделайте такие же, какие записаны в "P5:P7" и используйте этот макрос: [vba]
Код
Sub Печать() Worksheets(Range("P5").Value).PrintOut Copies:=Range("Q5").Value Worksheets(Range("P6").Value).PrintOut Copies:=Range("Q6").Value Worksheets(Range("P7").Value).PrintOut Copies:=Range("Q7").Value End Sub
[/vba]
Имена листов сделайте такие же, какие записаны в "P5:P7" и используйте этот макрос: [vba]
Код
Sub Печать() Worksheets(Range("P5").Value).PrintOut Copies:=Range("Q5").Value Worksheets(Range("P6").Value).PrintOut Copies:=Range("Q6").Value Worksheets(Range("P7").Value).PrintOut Copies:=Range("Q7").Value End Sub
Sub printo() For i = 1 To 3 For j = 1 To Worksheets.Count If Worksheets(j).Name Like [P4].Offset(i, 0) & "*" Then Worksheets(j).PrintOut copies:=[P4].Offset(i, 1): Exit For Next j, i End Sub
[/vba]
Можно и в цикле пройтись: [vba]
Код
Sub printo() For i = 1 To 3 For j = 1 To Worksheets.Count If Worksheets(j).Name Like [P4].Offset(i, 0) & "*" Then Worksheets(j).PrintOut copies:=[P4].Offset(i, 1): Exit For Next j, i End Sub
buchlotnik, Ваш макрос понравился больше всех. Создал целую матрицу очередности вывода страниц. Теперь и раскладывать не надо в ручную) Спасибо большое.
buchlotnik, Ваш макрос понравился больше всех. Создал целую матрицу очередности вывода страниц. Теперь и раскладывать не надо в ручную) Спасибо большое.koyaanisqatsi
buchlotnik, Еще раз здравствуйте. Все отлично работает но есть одно но. Если я меняю списки например под лето у нас уменьшается количество садов. И выводить надо меньше документов я сокращаю список и каждый раз мне приходится лесть в макрос и менять строку [vba]
Код
For i = 1 To 3
[/vba] Как попроще описать эту троечку чтобы был указан диапазон по вертикали ну скажем строк в 150 например но пустые бы он переставал печатать.
Я могу вместо тройки ссылку на ячейку сделать в которой формулой бы считалось сколько строк заполнено ? или проще можно в коде это написать ?
Спасибо.
buchlotnik, Еще раз здравствуйте. Все отлично работает но есть одно но. Если я меняю списки например под лето у нас уменьшается количество садов. И выводить надо меньше документов я сокращаю список и каждый раз мне приходится лесть в макрос и менять строку [vba]
Код
For i = 1 To 3
[/vba] Как попроще описать эту троечку чтобы был указан диапазон по вертикали ну скажем строк в 150 например но пустые бы он переставал печатать.
Я могу вместо тройки ссылку на ячейку сделать в которой формулой бы считалось сколько строк заполнено ? или проще можно в коде это написать ?
Sub printo() For i = 1 To [P4].End(xlDown).Row - 4 For j = 1 To Worksheets.Count If Worksheets(j).Name Like [P4].Offset(i, 0) & "*" Then Worksheets(j).PrintOut copies:=[P4].Offset(i, 1): Exit For Next j, i End Sub
[/vba]
Добрый день, как-то так [vba]
Код
Sub printo() For i = 1 To [P4].End(xlDown).Row - 4 For j = 1 To Worksheets.Count If Worksheets(j).Name Like [P4].Offset(i, 0) & "*" Then Worksheets(j).PrintOut copies:=[P4].Offset(i, 1): Exit For Next j, i End Sub
buchlotnik, Спасибо. Окончание строки не понял и в таком варианте работать не захотело. Зато в ячейку над столбцом списком ввел команду СЧЕТЗ и посчитал заполненные ячейки [vba]
Код
For i = 1 To [P4]
[/vba] тут указал ссылку на ячейку где произвел подсчет. Все работает. Спасибо.
buchlotnik, Спасибо. Окончание строки не понял и в таком варианте работать не захотело. Зато в ячейку над столбцом списком ввел команду СЧЕТЗ и посчитал заполненные ячейки [vba]
Код
For i = 1 To [P4]
[/vba] тут указал ссылку на ячейку где произвел подсчет. Все работает. Спасибо.koyaanisqatsi