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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2009, 18:09   #1
frantic150
Пользователь
 
Аватар для frantic150
 
Регистрация: 25.05.2009
Сообщений: 31
По умолчанию Как выделить несколько листов сразу?

Проблема:
Как програмно выделить листы (не по-почереди, а как бы ctrl'ом).
В листе Date есть диапозон значений (формул) D20:Q20
Макрос должен выбрать одновременно листы, основываясь на значениях ПУСТО или НЕПУСТО в диапозоне D20:Q20

Вот, что у меня получилось. Здесь проблема в том, что макрос по-очереди выбирает лист и по-очереди печатает, а это ну оочень долго.

Код:
Private Sub CommandButton5_Click()
 For i = 4 To 17
 If Not Sheets("Date").Cells(20, i).Value = "" Then
     Sheets(i).PrintOut
 End If
Next
End Sub
Знаю, что есть оператор Array(), но до конца в него не врубился.
Расчитываю на вашу помощь.

З.Ы. Нашел подобную тему, но там немного другое.

Последний раз редактировалось frantic150; 23.06.2009 в 18:13.
frantic150 вне форума Ответить с цитированием
Старый 23.06.2009, 18:33   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте так:

Код:
Private Sub CommandButton5_Click()
    Dim coll As New Collection
    For i = 4 To 17
        If Not Sheets("Date").Cells(20, i).Value = "" Then coll.Add Sheets(i).Name
    Next
    ReDim arr(1 To coll.Count): For i = 1 To coll.Count: arr(i) = coll(i): Next
    Sheets(arr).Select    ' Sheets(arr).PrintOut
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 23.06.2009, 18:39   #3
frantic150
Пользователь
 
Аватар для frantic150
 
Регистрация: 25.05.2009
Сообщений: 31
По умолчанию

То что надо! Спасибо!
frantic150 вне форума Ответить с цитированием
Старый 25.06.2009, 01:25   #4
frantic150
Пользователь
 
Аватар для frantic150
 
Регистрация: 25.05.2009
Сообщений: 31
По умолчанию

Почему то всегда активирует 8-ой лист, даже если все ячейки в диапозоне пусты
Ошибка в вашем коде?
frantic150 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить столбик с формулами сразу на 50 листов? Катик7 Microsoft Office Excel 2 01.05.2009 16:26
Можно ли разделить сразу несколько цифр на одно и тоже число? Xell Microsoft Office Excel 2 12.01.2009 13:32
Можно ли в одной распечатке совместить несколько листов? mik Microsoft Office Excel 5 31.10.2008 06:03
Вывод на экран сразу несколько картинок Artem Общие вопросы Delphi 6 13.12.2007 00:21
Снятие Защиты с листов, сразу со всех valerij Microsoft Office Excel 2 02.11.2007 21:19