Как говорится "старая песня о главном". В разделе "Приемы" http://www.planetaexcel.ru/tip.php?aid=99 печать одного бланка по отмеченной строке. А если не "играться" по одному бланку, как отметить несколько строк и напечатать несколько бланков одновременно?
Мне очень стыдно, я не знаю, как "циклом". Если отметить несколько строк ,бланк всё равно напечатается один. А как отметить, допустим, 5 строчек "Х" и распечатать 5 бланков одной формы ? Очень прошу,если можно, МАЛЮСИНЬКИЙ примерчик (для особо тупых)
Т.е. предлагаете показать Вам мой бланк? Вы знаете, как это не удивительно, но мне такой бланк не нужен, поэтому у меня его нет... Или Вы хотели, чтоб я его для Вас сделал? Т.е. не для Вас, а в мусорник, т.к. практического применения ему не будет.
В L ставите x (кого хотите печатать), затем запускаете код:
Sub tt() Dim cc As Range For Each cc In Sheets("Данные").UsedRange.Columns(12).Cells If cc.Value = "x" Then cc.Offset(, -11) = "х" Sheets("лист кас.кн.").PrintOut End If Next End Sub
Только осторожно с этими x, не попутайте раскладку! (я и сам не помню, в какой что где... Лучше всюду х заменить на v)
Я вообще-то обычно код ставлю в стандартный модуль (добавляю в проект), но всё работает и так, как Вы сделали. Только перечитайте первую строку: "В L ставите x (кого хотите печатать), затем запускаете код" Т.е. в столбце L тем, кого хотите печатать, ставите "х". И последнюю: "Только осторожно с этими x, не попутайте раскладку!"
Можно и галочками - только далее сами будете все галки связывать вручную с ячейками :) И да, не печатало как нужно - я не заметил, что Вы удалили из файла часть родного кода :( Помнил, что в первом файле всё работало - не стал проверять...
"только далее сами будете все галки связывать вручную с ячейками :)" - это как ? я не знаю как их вообще делать, просто где-то скопировала и вставила. если не сможете подсказать сами как это делается, то хоть ссылочку для "почитать" дайте.
Ну я предложил легко и просто помечать строки любой буквой, с клавиатуры. Вариант чуть сложнее - ставить эти символы даблкликом по ячейке (нужно ещё один макрос написать). Вы захотели использовать эти элементы - пожалуйста, используйте, но это самый неудобный вариант на стадии разработки. Нужно расставить эти элементы, у каждого в свойствах указать связанную ячейку, на значение которой ориентировать код. У связанных ячеек задал цвет шрифта белый, чтоб эти значения не мешали. Хотя их можно помещать и в скрытый столбец - кстати неплохо смотрится в примере, если L скрыть.
"указать связанную ячейку, на значение которой ориентировать код." - для меня это лес дремучий, можно сначала и поковыряться с документом, чтобы потом было быстрее, но как СВЯЗАТЬ ячейки (например?)
Кликаете на свой чекбокс правой клавишей мыши, выбираете в меню "Format Control" (не помню, как в русском варианте) - там далее указываете ячейку, куда будет выводиться значение TRUE/FALSE. Это стандартная схема использования этих элементов. Ну а в коде проверяете эти значения, а не буквы, как было в моём первом варианте.
Конечно, если эта форма долгое время будет неизменна, то есть смысл один раз её сделать красивой и удобной для использования.
Если строк много - то будет сложно все чекбоксы отследить. Да и настраивать много работы, хоть и один раз. Я бы вероятно делал постановку/снятие галочек прямо в ячейки даблкликом, вот как в приёмах описано http://www.planetaexcel.ru/tip.php?aid=36 А в заголовке таблицы поставил фильтр. Так легко просмотреть/отменить выбранных, не выискивая их глазами. Да и отменить все просто - выделяем диапазон, удаляем. Но как хотите, это просто совет.
Я бы вероятно делал постановку/снятие галочек прямо в ячейки даблкликом, вот как в приёмах описано http://www.planetaexcel.ru/tip.php?aid=36 А в заголовке таблицы поставил фильтр.
А как это связать с заполнением бланка и выводом на печать?
Бланк берёт данные на основе ВПР() по одной первой метке в определённом столбце (вернее здесь макрос сам стирает все другие метки, но это не суть, это детали реализации). Значит мы макросом подставляем эту метку (перебирая выставленные галки в другом столбце), формируется бланк, его печататем, подставляем следующую метку и т.д. Можно чуть код переделать - убрать часть кода стирающую лишние метки, и стирать и ставить их по одной основным кодом. Но это уже мелочи реализации. Основное - форма ВПР()ом тянет данные по меткам, которые по одной ставятся управляющим макросом.
в приёме http://www.planetaexcel.ru/tip.php?aid=36 ничего не говорится о макросе на печать. Может надо Ваш код : Sub tt() Dim cc As Range For Each cc In Sheets("Данные").UsedRange.Columns(12).Cells If cc.Value = "x" Then cc.Offset(, -11) = "х" Sheets("лист кас.кн.").PrintOut End If Next End Sub подставить?
В приёмах после выставления метки в бланк по этой метке подтягиваются данные. Затем что хотите, то с бланком и делайте - можно печатать, можно копипастить данные в другой файл, что угодно. Мой макрос делает как раз эти операции - в цикле подставляет метки и печатает полученное.
Теперь если смотреть реализацию, тут уже можно рассматривать приведённый код - по какому столбцу идёт цикл, какие значения там ищет, куда ставит метки, какие метки, какой лист печатает... 5 вопросов по 4-м строкам :)
{quote}{login=Hugo}{date=25.11.2012 04:06}{thema=}{post}Теперь если смотреть реализацию, тут уже можно рассматривать приведённый код - по какому столбцу идёт цикл, какие значения там ищет, куда ставит метки, какие метки, какой лист печатает... 5 вопросов по 4-м строкам :){/post}{/quote} какому столбцу идёт цикл - какие значения там ищет - столбец "В", например, куда ставит метки - столбец "А", какие метки - "галочки", какой лист печатает..."лист кас.кн.", но одновременно на все строки, отмеченные галочками