Нарисовал тоже вариант. Не понятно в какой бланк, что конкретно вставлять и куда. Делал по цитате из Сообщения№1. Будет ли работать на Мак не знаю. Расставляет крестики и формирует диапазоны. Посмотрите, может на что сгодится.
Нарисовал тоже вариант. Не понятно в какой бланк, что конкретно вставлять и куда. Делал по цитате из Сообщения№1. Будет ли работать на Мак не знаю. Расставляет крестики и формирует диапазоны. Посмотрите, может на что сгодится.gling
gling, работает на мак, распределяет красиво. Но суть ТЗ в следующем, что бы выводить на печать данные на бланк. . По крестикам заполняется бланк через ВПР, и выводится на печать. Как только он ушел на печать, заполняется следующие ячейки снова с теми же условиями.
gling, работает на мак, распределяет красиво. Но суть ТЗ в следующем, что бы выводить на печать данные на бланк. . По крестикам заполняется бланк через ВПР, и выводится на печать. Как только он ушел на печать, заполняется следующие ячейки снова с теми же условиями.bobrenja
Сообщение отредактировал bobrenja - Воскресенье, 27.03.2016, 17:34
Бланк на печать вывести не проблема. Что должно быть в этом бланке и по каким параметрам вставить в бланк, кто определяет, автомат или человек? Если распределение правильное, то на мой взгляд, данные, которые сейчас собираются в столбики на листе "БЛАНК", можно вставить в любое место вашего бланка и отправить на печать. Нужно только подправить макрос.
Бланк на печать вывести не проблема. Что должно быть в этом бланке и по каким параметрам вставить в бланк, кто определяет, автомат или человек? Если распределение правильное, то на мой взгляд, данные, которые сейчас собираются в столбики на листе "БЛАНК", можно вставить в любое место вашего бланка и отправить на печать. Нужно только подправить макрос.gling
Сейчас более подробно распишу хотелку. Бланк будет форматом B5 (двухсторонний ) На страницу A4 как раз помещается два одинаковых бланка (что бы ускорить печать за один проход, затем лист разрывается и получается два бланка.)
Вот в сообщении №6 http://www.excelworld.ru/forum/10-22394-180691-16-1459030047 я написал ТЗ для одного бланка. что бы разделить два бланка используется ВПР для первого бланка - "x" и "x2" для второго бланка - "xx" и "xx2" Вот для одного бланка вопрос практически решен.
Сейчас более подробно распишу хотелку. Бланк будет форматом B5 (двухсторонний ) На страницу A4 как раз помещается два одинаковых бланка (что бы ускорить печать за один проход, затем лист разрывается и получается два бланка.)
Вот в сообщении №6 http://www.excelworld.ru/forum/10-22394-180691-16-1459030047 я написал ТЗ для одного бланка. что бы разделить два бланка используется ВПР для первого бланка - "x" и "x2" для второго бланка - "xx" и "xx2" Вот для одного бланка вопрос практически решен.bobrenja
Sub печать() Dim i&, msg&, 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 i = i + 1 If Cells(i, 3) <> "" Then Cells(i, 2) = "o" If Cells(i, 3) = Cells(i + 1, 3) And Cells(i, 4) = Cells(i + 1, 4) Then Cells(i + 1, 2) = "oo" i = i + 1 End If End If Sheets("БЛАНК").PrintOut MsgBox "Отправлено на печать" Next i End Sub
[/vba] Если сильно хочется то "х" и "хх" можно заменить на "х" и "х2" а "о" и "оо" на "хх" и "хх2" . Хотя, схожие символы больше путают. Главное в формулах проставить.
Кажись понял че надо. [vba]
Код
Sub печать() Dim i&, msg&, 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 i = i + 1 If Cells(i, 3) <> "" Then Cells(i, 2) = "o" If Cells(i, 3) = Cells(i + 1, 3) And Cells(i, 4) = Cells(i + 1, 4) Then Cells(i + 1, 2) = "oo" i = i + 1 End If End If Sheets("БЛАНК").PrintOut MsgBox "Отправлено на печать" Next i End Sub
[/vba] Если сильно хочется то "х" и "хх" можно заменить на "х" и "х2" а "о" и "оо" на "хх" и "хх2" . Хотя, схожие символы больше путают. Главное в формулах проставить.Wasilich
Wasilich, то что нужно. С вашими примерами (кто в теме выкладывал) уже понемногу начал в макросах понимать. Wasilich, бланк двухсторонний будет. Можно что бы при печати первой стороны, он предлагал перевернуть лист и напечатать вторую сторону?? Или за один проход что бы печатал первую сторону, затем перевернуть лист и печатал вторую?
Указать как то диапазон строк можно?? с какой по какую?
Wasilich, то что нужно. С вашими примерами (кто в теме выкладывал) уже понемногу начал в макросах понимать. Wasilich, бланк двухсторонний будет. Можно что бы при печати первой стороны, он предлагал перевернуть лист и напечатать вторую сторону?? Или за один проход что бы печатал первую сторону, затем перевернуть лист и печатал вторую?
Указать как то диапазон строк можно?? с какой по какую?bobrenja
Сообщение отредактировал bobrenja - Понедельник, 28.03.2016, 12:11
Посмотрите реализацию печати для одного бланка и формулы
Зачем нужны формулы, если макрос сразу вставляет готовое значение? Один бланк сформируете, что будите делать со второй половиной листа формата А4. Ведь
На страницу A4 как раз помещается два одинаковых бланка
Вы по видимому хотите получить готовое решение, но объяснили задачу на половину. В моем примере условно изображены два бланка на одной странице, в которые вставляются данные и выводится этот бланк на печать. В вашем примере второй бланк убран, но про него написано. Вы пробовали распечатать точто формируется? И для чего Вам переворачивать бланк, что хотите печатать на другой стороне? Если установленную форму, без вставки каких либо данных, то это пожалуйста, а если данные связанные с противоположной стороной листа, то это проблема. Для решения вашей задачи лучше будет разрезать листы А4 заранее и печатать как отдельный бланк каждый раз переворачивая.
Посмотрите реализацию печати для одного бланка и формулы
Зачем нужны формулы, если макрос сразу вставляет готовое значение? Один бланк сформируете, что будите делать со второй половиной листа формата А4. Ведь
На страницу A4 как раз помещается два одинаковых бланка
Вы по видимому хотите получить готовое решение, но объяснили задачу на половину. В моем примере условно изображены два бланка на одной странице, в которые вставляются данные и выводится этот бланк на печать. В вашем примере второй бланк убран, но про него написано. Вы пробовали распечатать точто формируется? И для чего Вам переворачивать бланк, что хотите печатать на другой стороне? Если установленную форму, без вставки каких либо данных, то это пожалуйста, а если данные связанные с противоположной стороной листа, то это проблема. Для решения вашей задачи лучше будет разрезать листы А4 заранее и печатать как отдельный бланк каждый раз переворачивая.
gling, а если напечатать нужно будет один бланк?? или через какое то время вытащить один бланк с БД. Как тогда?? А так вручную поставил "х" или ("x" и "xx") и распечатал бланк с одной строкой Данные будут так же вставляется в бланк с другой стороны. Бланк двухсторонний.
Цитата
Ответ: "можно", но нужно знать из какого листа и диапазона взять эту вторую сторону.
Для одного бланка данные берутся с одного листа и одной строки. Вот тут самое удобно вставлять через формулу, так как значений на бланку будет ОЧень много, около 20. Если строк наберется на листе больше 100?? Не очень удобно что бы скрипт начал печатать от А до Я. А если нужно напечатать строки к примеру с 50 по 60, а всех 200. Как быть в таком случаи?
Цитата
В вашем примере второй бланк убран, но про него написано.
Первое сообщение как раз и было с двумя бланками в примере, но как намекнули мне, что не верно ТЗ составлено (ничего не понятно). Затем я написал ТЗ для одного бланка, что бы более подробно донести мысль.
Цитата
Это уже вопрос для другой темы.
Почему другой?? Это ведь касается одного бланка.
gling, Ваш труд уважаю как и других кто принимает участие, и вы первые кто ТЗ сделал с 4 мя условиями проверки строк.
По поводу печати двух сторон (для массовой печати более 20 строк), я вижу так: скрипт Wasilich, прогоняет вначале по одной странице (первой). Как только закончил диапазон печати, предлагает перевернуть страницы и по второму кругу подставлять "x" но выводить вторую страницу.
P.S. а выставить с какого по какой диапазон печатать реально?
gling, а если напечатать нужно будет один бланк?? или через какое то время вытащить один бланк с БД. Как тогда?? А так вручную поставил "х" или ("x" и "xx") и распечатал бланк с одной строкой Данные будут так же вставляется в бланк с другой стороны. Бланк двухсторонний.
Цитата
Ответ: "можно", но нужно знать из какого листа и диапазона взять эту вторую сторону.
Для одного бланка данные берутся с одного листа и одной строки. Вот тут самое удобно вставлять через формулу, так как значений на бланку будет ОЧень много, около 20. Если строк наберется на листе больше 100?? Не очень удобно что бы скрипт начал печатать от А до Я. А если нужно напечатать строки к примеру с 50 по 60, а всех 200. Как быть в таком случаи?
Цитата
В вашем примере второй бланк убран, но про него написано.
Первое сообщение как раз и было с двумя бланками в примере, но как намекнули мне, что не верно ТЗ составлено (ничего не понятно). Затем я написал ТЗ для одного бланка, что бы более подробно донести мысль.
Цитата
Это уже вопрос для другой темы.
Почему другой?? Это ведь касается одного бланка.
gling, Ваш труд уважаю как и других кто принимает участие, и вы первые кто ТЗ сделал с 4 мя условиями проверки строк.
По поводу печати двух сторон (для массовой печати более 20 строк), я вижу так: скрипт Wasilich, прогоняет вначале по одной странице (первой). Как только закончил диапазон печати, предлагает перевернуть страницы и по второму кругу подставлять "x" но выводить вторую страницу.
P.S. а выставить с какого по какой диапазон печатать реально?bobrenja
Сообщение отредактировал bobrenja - Понедельник, 28.03.2016, 21:32
Это делать не за чем, создать второй лист с обратно стороной, при первой установке "х" сразу вставляются данные на первую и вторую сторону. Макрос после отправке первого листа на печать задает вопрос отправить ли второй лист (оборотную сторону бланка) на печать. макрос в моем примере состоит из нескольких частей которые можно запускать отдельно. 1. Распределяет букафки. 2. Выводит на печать "х" и "хх" 3. Выводит на печать "х2" и "хх2" А вместо вывода информации "Печать" с одной кнопкой, можно вывести с тремя, "печатать", "пропустить" и "прекратить работу". Это только предложение. Можете не прислушиваться. В таком варианте, мне кажется, будет удобней пользоваться.
Это делать не за чем, создать второй лист с обратно стороной, при первой установке "х" сразу вставляются данные на первую и вторую сторону. Макрос после отправке первого листа на печать задает вопрос отправить ли второй лист (оборотную сторону бланка) на печать. макрос в моем примере состоит из нескольких частей которые можно запускать отдельно. 1. Распределяет букафки. 2. Выводит на печать "х" и "хх" 3. Выводит на печать "х2" и "хх2" А вместо вывода информации "Печать" с одной кнопкой, можно вывести с тремя, "печатать", "пропустить" и "прекратить работу". Это только предложение. Можете не прислушиваться. В таком варианте, мне кажется, будет удобней пользоваться.gling
gling, мне все мнения и варианты интересны. Для того и форум, что бы вести дискуссии, обсуждения, делится мнениями и вариантами. Хочется сделать максиму что бы было просто и удобно.
Цитата
при первой установке "х" сразу вставляются данные на первую и вторую сторону.
Так и планируется делать.
P.S. в процессе эксплуатации макроса, еще будут возникать вопросы по его "допилке".
gling, мне все мнения и варианты интересны. Для того и форум, что бы вести дискуссии, обсуждения, делится мнениями и вариантами. Хочется сделать максиму что бы было просто и удобно.
Цитата
при первой установке "х" сразу вставляются данные на первую и вторую сторону.
Так и планируется делать.
P.S. в процессе эксплуатации макроса, еще будут возникать вопросы по его "допилке".bobrenja
Сообщение отредактировал bobrenja - Вторник, 29.03.2016, 07:24
прогоняет вначале по одной странице (первой). Как только закончил диапазон печати, предлагает перевернуть страницы и по второму кругу подставлять "x" но выводить вторую страницу.
Мой макрос рассчитан на два бланка, первый "х" и "хх" второй "о" и "оо". Они одновременно заполняются через формулу ВПР в первый через "х" и "хх" второй через "о" и "оо" и сразу отправляются на печать с остановкой макроса сообщением "Отправлено на печать". Дождитесь пока напечатается лист, переверните, вставьте в принтер, нажмите ОК. В чем проблема?
прогоняет вначале по одной странице (первой). Как только закончил диапазон печати, предлагает перевернуть страницы и по второму кругу подставлять "x" но выводить вторую страницу.
Мой макрос рассчитан на два бланка, первый "х" и "хх" второй "о" и "оо". Они одновременно заполняются через формулу ВПР в первый через "х" и "хх" второй через "о" и "оо" и сразу отправляются на печать с остановкой макроса сообщением "Отправлено на печать". Дождитесь пока напечатается лист, переверните, вставьте в принтер, нажмите ОК. В чем проблема?
Sub печать() Dim i&, msg&, msg2&, ps& ps = Range("C" & Rows.Count).End(xlUp).Row msg = InputBox("Номер строки начала печати", , 3) msg2 = InputBox("Номер строки конца печати", , ps) If msg < 3 Or msg2 < msg Then Exit Sub For i = msg To msg2 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 i = i + 1 If Cells(i, 3) <> "" Then Cells(i, 2) = "o" If Cells(i, 3) = Cells(i + 1, 3) And Cells(i, 4) = Cells(i + 1, 4) Then Cells(i + 1, 2) = "oo" i = i + 1 End If End If 'Sheets("БЛАНК").PrintOut MsgBox "Отправлено на печать. Переверните лист, вложите в принтер, ОК" Next i End Sub
Sub печать() Dim i&, msg&, msg2&, ps& ps = Range("C" & Rows.Count).End(xlUp).Row msg = InputBox("Номер строки начала печати", , 3) msg2 = InputBox("Номер строки конца печати", , ps) If msg < 3 Or msg2 < msg Then Exit Sub For i = msg To msg2 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 i = i + 1 If Cells(i, 3) <> "" Then Cells(i, 2) = "o" If Cells(i, 3) = Cells(i + 1, 3) And Cells(i, 4) = Cells(i + 1, 4) Then Cells(i + 1, 2) = "oo" i = i + 1 End If End If 'Sheets("БЛАНК").PrintOut MsgBox "Отправлено на печать. Переверните лист, вложите в принтер, ОК" Next i End Sub
Дождитесь пока напечатается лист, переверните, вставьте в принтер, нажмите ОК. В чем проблема?
Да не проблема )))) Если за раз 50 бланков пускать на печать??
Впринципе так же есть вероятность занятия бумаги или еще чего то, и на практике может уйти больше времени, чем пускать на печать и переворачивать.
Wasilich, уже завтра все примеры буду пробывать.
Цитата
Дождитесь пока напечатается лист, переверните, вставьте в принтер, нажмите ОК. В чем проблема?
Да не проблема )))) Если за раз 50 бланков пускать на печать??
Впринципе так же есть вероятность занятия бумаги или еще чего то, и на практике может уйти больше времени, чем пускать на печать и переворачивать.bobrenja
жаль что не видно какие строки в данный момент выводит на печать.
А для чего это надо? Ну увидели какие строки печатает и что? Можно только принтер отключить. Отключить принтер можно после печати первого бланка, если что пошло не так, испортится один лист.
жаль что не видно какие строки в данный момент выводит на печать.
А для чего это надо? Ну увидели какие строки печатает и что? Можно только принтер отключить. Отключить принтер можно после печати первого бланка, если что пошло не так, испортится один лист.gling