Есть лист "БЛАНК" с бланком в который нужно выводить на печать данные с листов. Нужно что бы предлагал какой диапазон строк на листе выводить на печать в бланк. Печать в бланк нужно по разным условиям.
Более подробно описал в листе. Процитирую сюда еще ТЗ В бланк данные вносятся через ВПР в зависимости от x,x2,xx,xx2.
Цитата
макрос нужно чтобы спрашивал какой диапазон ячеек выводить на печать (где условно ставить x или x*) Первым должен ставится х а далее по условиям x2 или xx и xx2 Когда С4 и следующая ячейка С5, а так же D4 и D5 одинаковые, то в B5 нужно что бы ставило "x2" или ставило "xx2" в зависимости от предыдущей ячейке цветом в колонке A показано визуально как должно выводить блоками на печать по условию цветом в колонке A показано визуально как должно выводить блоками на печать по условию "x" - данные в первый бланк "xx" - данные в первый бланк в дополнительную строку "x2" - данные во второй бланк "xx2" - данные во второй бланк в дополнительную строку
P.S. данные что бы выводил с активного листа
Здравствуйте уважаемые форумчане.
Есть лист "БЛАНК" с бланком в который нужно выводить на печать данные с листов. Нужно что бы предлагал какой диапазон строк на листе выводить на печать в бланк. Печать в бланк нужно по разным условиям.
Более подробно описал в листе. Процитирую сюда еще ТЗ В бланк данные вносятся через ВПР в зависимости от x,x2,xx,xx2.
Цитата
макрос нужно чтобы спрашивал какой диапазон ячеек выводить на печать (где условно ставить x или x*) Первым должен ставится х а далее по условиям x2 или xx и xx2 Когда С4 и следующая ячейка С5, а так же D4 и D5 одинаковые, то в B5 нужно что бы ставило "x2" или ставило "xx2" в зависимости от предыдущей ячейке цветом в колонке A показано визуально как должно выводить блоками на печать по условию цветом в колонке A показано визуально как должно выводить блоками на печать по условию "x" - данные в первый бланк "xx" - данные в первый бланк в дополнительную строку "x2" - данные во второй бланк "xx2" - данные во второй бланк в дополнительную строку
P.S. данные что бы выводил с активного листаbobrenja
Нашел код на соседнем форуме, но он печатает только с одним "х" без условий.
Как бы допилить вариант с проверкой и под мое ТЗ. в макросах можно сказать не разбираюсь.
[vba]
Код
Sub printall() Dim what2print As Range Dim database As Range, data As Range Dim Countdata As Long Dim i As Long, msg As Long
Set database = Range("БазаДанных") Set what2print = Worksheets("Бланк").Range("A2:O31") database.Worksheet.Activate
msg = InputBox("Введите номер строки начала печати", , 2)
If msg < 2 Then Exit Sub
Countdata = database.Rows.Count For i = msg To Countdata Range("A2:A" & Countdata).ClearContents Set data = database.Rows(i) data.Cells(1).Value = "x" what2print.PrintPreview 'закоментировать после отладки 'what2print.PrintOut 'убрать коментарий для выполнения печати Next i
End Sub
[/vba]
Нашел код на соседнем форуме, но он печатает только с одним "х" без условий.
Как бы допилить вариант с проверкой и под мое ТЗ. в макросах можно сказать не разбираюсь.
[vba]
Код
Sub printall() Dim what2print As Range Dim database As Range, data As Range Dim Countdata As Long Dim i As Long, msg As Long
Set database = Range("БазаДанных") Set what2print = Worksheets("Бланк").Range("A2:O31") database.Worksheet.Activate
msg = InputBox("Введите номер строки начала печати", , 2)
If msg < 2 Then Exit Sub
Countdata = database.Rows.Count For i = msg To Countdata Range("A2:A" & Countdata).ClearContents Set data = database.Rows(i) data.Cells(1).Value = "x" what2print.PrintPreview 'закоментировать после отладки 'what2print.PrintOut 'убрать коментарий для выполнения печати Next i
Сначала я думал, что я один ни фига не понимаю в вашей задаче но, судя по ответам, я ошибаюсь, я не один. Даже не понимаю о чем спросить, чтобы понять.
Сначала я думал, что я один ни фига не понимаю в вашей задаче но, судя по ответам, я ошибаюсь, я не один. Даже не понимаю о чем спросить, чтобы понять. Wasilich
Нужно выводить данные строк на печать. Что бы вручную не ставить в каждую строку "x"? переходить на бланк и нажимать печать, хочется автоматизировать печать, указав с какой по какую строку пускать на печать бланк.
Все бы хорошо, если бы печать шла по порядку, но в зависимости от условий, это делает не возможным.
Может не правильно как то выражаюсь )))) Задайте вопрос что не понятно, попробую по другому пояснить что хочу получить.
Напишите на каком вопросе ступор??
Нужно выводить данные строк на печать. Что бы вручную не ставить в каждую строку "x"? переходить на бланк и нажимать печать, хочется автоматизировать печать, указав с какой по какую строку пускать на печать бланк.
Все бы хорошо, если бы печать шла по порядку, но в зависимости от условий, это делает не возможным.
Может не правильно как то выражаюсь )))) Задайте вопрос что не понятно, попробую по другому пояснить что хочу получить.bobrenja
Сообщение отредактировал bobrenja - Воскресенье, 27.03.2016, 00:42
Переделал постановку вопроса ))) Не судите строго )))
Есть БЛАНК для печати, куда заносятся данные через ВПР с листа ЯНВАРЬ.
Нужно вывести на печать данные строк B3:B16. Для этого нам нужно поставить x сначала в B3 и пустить на печать БЛАНК, затем в B4 поставить x и пустить на печать и тд. Хочется автоматизировать макросом. ========
НО, на листе БЛАНК есть две графы ВПР с условием "x" (G2) и "xx" (G3)
Когда С3 и следующая ячейка С4 НЕ РАВНЫ, тогда пускаем на печать бланка данные только со строкой "3", иначе в С4 поставим "xx" и занесем в БЛАНК данные с двух строк (там сработает формула суммы двух ячеек) и пустим на печать.
фух .....учителем мне не быть, плохо разъяснения делаю :)
P.S. перезалил файл
Переделал постановку вопроса ))) Не судите строго )))
Есть БЛАНК для печати, куда заносятся данные через ВПР с листа ЯНВАРЬ.
Нужно вывести на печать данные строк B3:B16. Для этого нам нужно поставить x сначала в B3 и пустить на печать БЛАНК, затем в B4 поставить x и пустить на печать и тд. Хочется автоматизировать макросом. ========
НО, на листе БЛАНК есть две графы ВПР с условием "x" (G2) и "xx" (G3)
Когда С3 и следующая ячейка С4 НЕ РАВНЫ, тогда пускаем на печать бланка данные только со строкой "3", иначе в С4 поставим "xx" и занесем в БЛАНК данные с двух строк (там сработает формула суммы двух ячеек) и пустим на печать.
фух .....учителем мне не быть, плохо разъяснения делаю :)
Public Sub www() Dim a, n& On Error GoTo ErrorHandler n = 3 Do While n < 17 Me.[b3:b16].ClearContents [БЛАНК!a9:g22].ClearContents If Me.Cells(n + 1, 3) = Me.Cells(n, 3) Then Me.Cells(n + 1, 2) = "xx": Me.Cells(n, 2) = "x" a = Me.Cells(n, 1).Resize(2, 6).Value n = n + 2 Else Me.Cells(n, 2) = "x" a = Me.Cells(n, 1).Resize(, 6).Value n = n + 1 End If [БЛАНК!a9].Resize(UBound(a), 6) = a Sheets("БЛАНК").PrintOut Loop Exit Sub ErrorHandler: MsgBox Error, vbExclamation + vbOKOnly End Sub
[/vba]
Диапазон в формулах исправьте. [vba]
Код
Public Sub www() Dim a, n& On Error GoTo ErrorHandler n = 3 Do While n < 17 Me.[b3:b16].ClearContents [БЛАНК!a9:g22].ClearContents If Me.Cells(n + 1, 3) = Me.Cells(n, 3) Then Me.Cells(n + 1, 2) = "xx": Me.Cells(n, 2) = "x" a = Me.Cells(n, 1).Resize(2, 6).Value n = n + 2 Else Me.Cells(n, 2) = "x" a = Me.Cells(n, 1).Resize(, 6).Value n = n + 1 End If [БЛАНК!a9].Resize(UBound(a), 6) = a Sheets("БЛАНК").PrintOut Loop Exit Sub ErrorHandler: MsgBox Error, vbExclamation + vbOKOnly End Sub
Sub печать() Dim i As Long, msg As Long, ps& msg = InputBox("Введите номер строки начала печати", , 3) If msg < 3 Then Exit Sub ps = Range("C" & Rows.Count).End(xlUp).Row For i = msg To ps Range("B2:B" & ps).ClearContents Cells(i, 2) = "x" If Cells(i, 3) = Cells(i + 1, 3) And Cells(i, 4) = Cells(i + 1, 4) Then Cells(i + 1, 2) = "xx" i = i + 1 End If MsgBox "НА ПЕЧАТЬ" 'Sheets("БЛАНК").PrintOut Next i End Sub
[/vba]
Наугад... [vba]
Код
Sub печать() Dim i As Long, msg As Long, ps& msg = InputBox("Введите номер строки начала печати", , 3) If msg < 3 Then Exit Sub ps = Range("C" & Rows.Count).End(xlUp).Row For i = msg To ps Range("B2:B" & ps).ClearContents Cells(i, 2) = "x" If Cells(i, 3) = Cells(i + 1, 3) And Cells(i, 4) = Cells(i + 1, 4) Then Cells(i + 1, 2) = "xx" i = i + 1 End If MsgBox "НА ПЕЧАТЬ" 'Sheets("БЛАНК").PrintOut Next i End Sub
KuklP, спасибо что откликнулись, но когда качаю ваш файлик и пытаюсь запустить макрос, пишет - "Не удается открыть макрос '7079495-10-3.xlsm'!Лист2.www"
Когда в свой вставляю и запускаю - "Ошибка компиляции. Недопустимое использование колючего слова "Me" ".
P.S. если можно, то что бы предлагал с какой по какую строку печатать
KuklP, спасибо что откликнулись, но когда качаю ваш файлик и пытаюсь запустить макрос, пишет - "Не удается открыть макрос '7079495-10-3.xlsm'!Лист2.www"
Когда в свой вставляю и запускаю - "Ошибка компиляции. Недопустимое использование колючего слова "Me" ".
P.S. если можно, то что бы предлагал с какой по какую строку печататьbobrenja
Wasilich, спасибо. Предлагает с какой строки начать печать, но ничего не происходит. "х" переносится в последнюю ячейку B16 и стает выделены диапазон B3:B14
Может быть проблема в моем excel?
[offtop]мне выпала честь вам округлить репутацию к "200"
Wasilich, спасибо. Предлагает с какой строки начать печать, но ничего не происходит. "х" переносится в последнюю ячейку B16 и стает выделены диапазон B3:B14
Может быть проблема в моем excel?
[offtop]мне выпала честь вам округлить репутацию к "200" bobrenja
Сообщение отредактировал bobrenja - Воскресенье, 27.03.2016, 11:15
Pelena, Wasilich, два варианта хороши. Переделан вариант Pelena от KuklP печатает строки без возможности выбора с какой по какую пустить на печать. Вариант от Wasilich, спрашивает с какой строки начать печать, и после каждой строки выводит "На печать", но на принтер не идет.
P.S. бланк будет двухсторонним. Можно что бы при выводе на печать первого листа, останавливалось и спрашивало "Готовы печатать вторую сторону?", или что то в этом духе. Или можно что бы макрос печатал вначале первую страницу всех строк, затем перевернуть бумагу с первой стороной, и он допечатал вторую сторону (дабы ускорить процесс печати, а то строк может быть о100 и более)
Спасибо за участие, макрос очень облегчает работу
Pelena, Wasilich, два варианта хороши. Переделан вариант Pelena от KuklP печатает строки без возможности выбора с какой по какую пустить на печать. Вариант от Wasilich, спрашивает с какой строки начать печать, и после каждой строки выводит "На печать", но на принтер не идет.
P.S. бланк будет двухсторонним. Можно что бы при выводе на печать первого листа, останавливалось и спрашивало "Готовы печатать вторую сторону?", или что то в этом духе. Или можно что бы макрос печатал вначале первую страницу всех строк, затем перевернуть бумагу с первой стороной, и он допечатал вторую сторону (дабы ускорить процесс печати, а то строк может быть о100 и более)
Спасибо за участие, макрос очень облегчает работуbobrenja
Есть, и немалая. На примере первого макроса: на Mac из модуля листа работают только макросы, непосредственно касающиеся событий листа, поэтому пришлось макрос перенести в стандартный модуль и поправить обращение к листу
А вообще, в большинстве случаев макросы для Win не работают на Mac
Вот макрос от Василича Для печати достаточно было раскомментировать строку [vba]
Есть, и немалая. На примере первого макроса: на Mac из модуля листа работают только макросы, непосредственно касающиеся событий листа, поэтому пришлось макрос перенести в стандартный модуль и поправить обращение к листу
А вообще, в большинстве случаев макросы для Win не работают на MacPelena
Пока остановился на варианте Wasilich, и тестирую, так как KuklP, в бланк при печати добавляет свои строки. А как допилить этот вариант
Цитата
P.S. бланк будет двухсторонним. Можно что бы при выводе на печать первого листа, останавливалось и спрашивало "Готовы печатать вторую сторону?", или что то в этом духе. Или можно что бы макрос печатал вначале первую страницу всех строк, затем перевернуть бумагу с первой стороной, и он допечатал вторую сторону (дабы ускорить процесс печати, а то строк может быть о100 и более)
Pelena, спасибо за участие и что указали в чем разница.
Пока остановился на варианте Wasilich, и тестирую, так как KuklP, в бланк при печати добавляет свои строки. А как допилить этот вариант
Цитата
P.S. бланк будет двухсторонним. Можно что бы при выводе на печать первого листа, останавливалось и спрашивало "Готовы печатать вторую сторону?", или что то в этом духе. Или можно что бы макрос печатал вначале первую страницу всех строк, затем перевернуть бумагу с первой стороной, и он допечатал вторую сторону (дабы ускорить процесс печати, а то строк может быть о100 и более)
Pelena, спасибо за участие и что указали в чем разница.bobrenja