Страницы: 1
RSS
Выборочная печать
 
Доброго времени всем!  
 
Помогите пожалуйста, поиском попробовал - ответа не нашел, как можно автоматизировать печать определенных строк.
 
Вот так. Даже лучше, чем просили.  
Выделяете нужные строки, можно не смежные, которые требуется напечатать,  
нажимаете кнопку.  
Всё, они печатаются вместе с заголовком.  
Макросы надо разрешить.
 
а я по-другому извращался :)  
схема такая (всё в макросе, конечно):  
1. в свободном столбце помечаем - какие строки были отображены перед вызовом макроса;  
2. оставляем видимыми только строки для выделенных ячеек и заголовков;  
3. посылаем на печать;  
4. восстанавливаем исходную у пользователя видимость/скрытость строк из доп.столбца;  
5. убираем улики - чистим этот столбец.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=GreenhornEX}{date=21.05.2011 04:07}{thema=Выборочная печать}{post}Доброго времени всем!  
 
Помогите пожалуйста, поиском попробовал - ответа не нашел, как можно автоматизировать печать определенных строк.{/post}{/quote}  
 
поиск с печатью
 
Большое спасибо за ответы, но я, наверное, немного не правильно сформулировал вопрос. Я думал не сразу на печать отправлять, а на 2-ом листе хотелось сделать форму с ячейками, в которые выделенные ячейки 1-го и должны попасть. А уже эту форму отправлять на печать. Типа накладной на несколько выделенных на 1-ом листе позиций.
 
{quote}{login=GreenhornEX}{date=22.05.2011 01:51}{thema=}{post}но я, наверное, немного не правильно сформулировал вопрос. {/post}{/quote}  
Перечитываем вопрос:  
"как можно автоматизировать печать определенных строк"  
И как должны бы Вас понять? Задание на дом - работаем над формулировками, ведь люди впустую потратили своё время на ВАС.
 
Людям, КОТОРЫЕ ПОТРАТИЛИ на меня время - тысячу извинений за неточность формулировки и еще раз большое спасибо.  
 
Персонально для Юрий М:    
Перечитываем:  
"как можно автоматизировать печать определенных строк" - в этой фразе где-то написано, что на печать должно выводиться без предварительного просмотра? Просто не было уточнения КАК они должны печататься, во втором сообщении я уточнил.  
 
Если кто-нибудь поможет с учетом уточнений, буду премного благодарен.
 
{quote}{login=GreenhornEX}{date=23.05.2011 11:56}{thema=}{post}Персонально для Юрий М: Перечитываем: "как можно автоматизировать печать определенных строк" - в этой фразе где-то написано, что на печать должно выводиться без предварительного просмотра? {/post}{/quote}  
Персонально для GreenhornEX:  
где-то написано, что на печать должно выводиться с предварительным просмотром? :-)  
Через сутки что-то похожее действительно появилось. После того, как три человека Вам ответили.
 
GreenhornEX, Юрий справедливо сделал Вам замечание. Ваш сарказм был абсолютно неуместен. Есть такая особенность - мы на форуме всячески стараемся повысить уровень квалификации пользователей Эксель. Однако, из этого совсем не следует, что нам нечего делать и некуда девать свое время. Правильно формулируя вопрос Вы проявляете вежливость к желающим Вам помочь и экономите их время и усилия.
Я сам - дурнее всякого примера! ...
 
На самом деле, во всех программах, которыми я пользуюсь (а их очень немало) при выводе на печать сначала можно предварительно посмотреть на свое творение и считал это само собой разумеющимся. В приложенном файле я дал дополнительные пояснения. Мне показалось все это достаточным для понимания задачи. После того как на мою просьбу откликнулись, я понял, что моих пояснений мало и попытался это исправить. В конце концов, можно было задать и уточняющий вопрос, а не набрасываться на человека и отправлять его делать уроки. Не ошибается только тот, кто ничего не делает.
 
вы бы лучше сказали - устроило вас решение Vlad'a и. если нет, то чем?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
запутали вы меня :)  
я думал, второй лист заполняется в макросе...  
а вы его ручками сделали.  
 
тогда понятно.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Весь процесс:  
1. Принимается заказ на какие-либо товары, список этих товаров находится (и растет по мере поступления заказов) на 1-ом листе;  
2. приезжает за товаром/ми один из курьеров и для него нужно на "фирменном" бланке распечатать позиции, которые он повезет.  
 
Требуется чтобы с первого листа выделенные позиции с помощью какого-то хитрого макроса попали на 2-ой лист, на котором будет подготовлена некая форма, которая будет расширяться с учетом количества позиций.  
 
У Vlad'a сразу уходит на печать и без формы, а просто ячейки.
 
У Влада практически все есть для этого. Вместо arr.PrintOut нужно    
arr.copy sheets(2).[a1]
потом вывод на печать по-желанию. Если самому не справиться - пишите.
Я сам - дурнее всякого примера! ...
 
О! Это почти то, что нужно!  
 
А возможно ли, чтобы перед вставкой новых, на втором листе ячейки очищались от старых данных? А то получается если одному курьеру распечатывалось 3 позиции, а следующему нужно 1, то первая позиция меняется, а вторая и третья остаются от предыдущего. Ну и совсем будет сказочно, если при нажатии на эту кнопку помимо копирования, еще автоматом будет открываться второй лист.
 
очистка:  
Set c = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp)  
If c.Row > 1 Then Sheets("Лист2").Range(c, Sheets("Лист2").[f2]).Clear
 
автомат:  
Sheets("Лист2").Activate
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ООООООгромнейшее спасибо!  
 
Все отлично заработало так как надо!  
 
Извините, если кого чем обидел. Я не со зла. :)  
 
Спасибо еще раз!
 
если вы воспользовались советом и добавили в макрос команду    
arr.copy sheets(2).[a1]
(то есть заголовки вы вставляете на второй лист каждый раз заново)  
то очистку можно сделать еще проще:  
 
sheets(2).[a1].currentregion.clear
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Нет, вставлять каждый раз новые заголовки мне и не нужно. Даже лучше чтобы очищались ячейки только в определенном диапазоне. Я один раз сделаю красивую форму и больше ее трогать не буду. А уже в ней будут изменяться определенные ячейки.
 
{quote}{login=ikki}{date=24.05.2011 01:59}{thema=}{post}If c.Row > 1 Then Sheets("Лист2").Range(c, Sheets("Лист2").[f2]).Clear{/post}{/quote}
ikki, а зачем проверка? - очищать диапазон безусловно, и всё тут :-)
 
{quote}{login=Юрий М}{date=24.05.2011 04:24}{thema=Re: }{post}{quote}{login=ikki}{date=24.05.2011 01:59}{thema=}{post}If c.Row > 1 Then Sheets("Лист2").Range(c, Sheets("Лист2").[f2]).Clear{/post}{/quote}
ikki, а зачем проверка? - очищать диапазон безусловно, и всё тут :-){/post}{/quote}  
ну не знаю... заголовки хотелось сохранить (я у себя именно так делаю - мне лень их даже копировать из шаблона, проще вовсе не трогать).  
а если на листе кроме заголовков нет больше никаких данных?  
тогда .End(xlUp) приведёт нас в первую строку.  
а последующая очистка без проверки благополучно эту первую строку и очистит.  
вот.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
но можно и проще писать, без проверок :)  
 
sheets(2).[a1].currentregion.offset(1,0).clear
единичку в offset() меняем на кол-во строк в заголовке.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ну вот :(  
вся красотишша летит к чёртовой бабушке  
 
sheets(2).[a1].currentregion.resize(sheets(2).[a1].currentregion.rows.count-1,0).offset(1,0).clear
 
а замечание совершенно верное.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=ikki}{date=24.05.2011 05:52}{thema=Re: Re: }{post}{quote}{login=Юрий М}{date=24.05.2011 04:24}{thema=Re: }{post}{quote}{login=ikki}{date=24.05.2011 01:59}{thema=}{post}{/post}{/quote}{/post}{/quote}а если на листе кроме заголовков нет больше никаких данных?{/post}{/quote}  
Я в таких случаях очищаю так:  
range(Cells(2,1), cells(iLastRow+1, 10)).clear  
Предполагается, что заголовок только в первой строке. Тогда, даже при отсутствии самих данных, заголовок останется.
Страницы: 1
Читают тему
Наверх