Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2010, 00:13   #1
Vitaliy87
 
Регистрация: 02.02.2010
Сообщений: 4
По умолчанию Как отметить несколько строк для выполнения макроса

Столкнулся с такой задачей: есть некая база данных по клиентам ( к примеру 200 человек), часто необходимо выбирать из них по 30-40 человек и распечатывать некоторые данные на бланк. Макрос для печати есть но, он действует только на 1 клиента. Возможно ли отметить на активном листе флажком необходимых клиентов и применить к ним макрос?
Vitaliy87 вне форума Ответить с цитированием
Старый 03.02.2010, 01:07   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Здесь подойдет цикл типа foreach ... in ... или for i=1 to n ...
В цикле можно вызывать соответствующую процедуру
motorway вне форума Ответить с цитированием
Старый 03.02.2010, 01:25   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Vitaliy87.
вопрос "Возможно ли..", подразумевает однозначный ответ - да или нет, если получите ответ Да - далее последует вопрос как?.
Если Вы планируете задавать вопрос Как, выкладывайте сразу архив с файлом образцом, приблизите возможное получение ответа.
Евгений.
P.S. форум не "машина ответов", его участники люди, и выкладывая вопрос не забывайте обращаться к тем кому Вы его адресуете, не знаете как - можно просто поздоровавшись.
Teslenko_EA вне форума Ответить с цитированием
Старый 04.02.2010, 03:25   #4
Vitaliy87
 
Регистрация: 02.02.2010
Сообщений: 4
По умолчанию

Здравствуйте Евгений и другие посетители данного форума. Вы правы, я неверно задал вопрос. Меня действительно интересует именно КАК это сделать.

Ниже образец
Вложения
Тип файла: rar образец.rar (16.9 Кб, 20 просмотров)
Vitaliy87 вне форума Ответить с цитированием
Старый 04.02.2010, 06:45   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Я бы не стал использовать чекбоксы.

Вот более простой вариант:
Код:
Sub Макрос1()
    Dim ra As Range: Set ra = Intersect(Selection.EntireRow, [b:f])
    With Sheets("Print")
        .UsedRange.Clear    ' очистка листа
        ra.Copy .[a1]    ' копирование выделенных строк
        .UsedRange.EntireColumn.AutoFit    ' автоподбор ширины столбцов
        .PrintOut ' вывод на печать
    End With
End Sub
1) Выделяем нужные строки, удерживая клавишу Ctrl
(достаточно выделить по одной ячейке в каждой строке, строки не обязательно должны идти подряд)
2) Запускаем макрос нажатием зелёной кнопки.

Пример файла: http://excelvba.ru/XL_Files/Sample__...0__8-45-32.zip
EducatedFool вне форума Ответить с цитированием
Старый 04.02.2010, 20:10   #6
Vitaliy87
 
Регистрация: 02.02.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Вот более простой вариант:
Код:
Sub Макрос1()
    Dim ra As Range: Set ra = Intersect(Selection.EntireRow, [b:f])
    With Sheets("Print")
        .UsedRange.Clear    ' очистка листа
        ra.Copy .[a1]    ' копирование выделенных строк
        .UsedRange.EntireColumn.AutoFit    ' автоподбор ширины столбцов
        .PrintOut ' вывод на печать
    End With
End Sub
Этот макрос подошел бы, если не одно но: необходимо чтобы каждая выделенная строка печаталась на отдельном листе
Vitaliy87 вне форума Ответить с цитированием
Старый 04.02.2010, 20:15   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
если не одно но: необходимо чтобы каждая выделенная строка печаталась на отдельном листе
Достаточно добавить в макрос кусок кода, добавляющий разрывы страницы после каждой строки, и будет как раз то, что вы просите.

такой макрос встречался на форуме

Вот что получится в Вашем случае:

Код:
Sub Макрос1()
    Dim ra As Range: Set ra = Intersect(Selection.EntireRow, [b:f])
    With Sheets("Print")
        .Activate
        .UsedRange.Clear    ' очистка листа
        ra.Copy .[a1]    ' копирование выделенных строк
        .UsedRange.EntireColumn.AutoFit    ' автоподбор ширины столбцов

        ' вставка разрывов страниц
        awv = ActiveWindow.View: ActiveWindow.View = xlPageBreakPreview
        ActiveSheet.ResetAllPageBreaks:    '  On Error Resume Next
        Dim cell As Range: Application.ScreenUpdating = False
        For Each cell In Range([A2], Range("A" & Rows.Count).End(xlUp)).Cells
            .HPageBreaks.Add cell
        Next cell
        ActiveWindow.View = awv

        .PrintPreview    ' вывод на печать
    End With
End Sub
Пример файла: http://excelvba.ru/XL_Files/Sample__...__22-25-58.zip

Если всё устроит - замените в коде .PrintPreview на .PrintOut

Последний раз редактировалось EducatedFool; 04.02.2010 в 20:26.
EducatedFool вне форума Ответить с цитированием
Старый 04.02.2010, 22:06   #8
Igor67
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 56
По умолчанию

Еще вариант решения.
Бланк заполняется через обыкновенную ВПР(), а циклом построчно ставим маркер на строки для печати.
В примере В модуле листа - печать по шелчку по одной.
В модуле1 - простенький цикл от заданной строки до конца данных. Но Вы можете ограничить через второй InputBox))
Вложения
Тип файла: zip ПечатьБланковМакро.zip (20.8 Кб, 30 просмотров)
обычно я на http://planetaexcel.ru/forum.php
Igor67 вне форума Ответить с цитированием
Старый 07.02.2010, 15:17   #9
Vitaliy87
 
Регистрация: 02.02.2010
Сообщений: 4
По умолчанию

Благодарю за помощь и активное участие!
Ваши решения помогли успешно закончить задачу.
Vitaliy87 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время выполнения макроса... nikolai_P Microsoft Office Excel 9 03.04.2013 00:59
Как сократить время выполнения макроса? Алексей11111 Microsoft Office Excel 11 01.12.2009 20:04
Как сделать, чтобы результат выполнения макроса записывался по строкам во всем столбце? kipish_lp Microsoft Office Excel 3 26.11.2009 07:18
как отключить отображение изменений во время выполнения макроса? AnnNet Microsoft Office Excel 1 15.04.2009 14:43
скрыть процесс выполнения макроса Iskin Microsoft Office Excel 1 21.11.2008 07:28