Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос (Задать область печати на нескольких листах) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос (Задать область печати на нескольких листах) (Формулы/Formulas)
Макрос (Задать область печати на нескольких листах)
pashkovsky Дата: Понедельник, 29.09.2014, 12:46 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 40% ±

Прошу помощи в доработке макроса, чтобы автоматически задавать область печати на нескольких листах книги в пределах имеющихся значений.
Прочитал форум нашел интересный топик - Задать одинаковую область печати для всех листов книги.
Но отличие моей ситуации от предложенного в том топике решения заключается в том, что у меня на разных листах должна быть разная область печати, так как разный объем представленных на листах данных (таблицы с столбцами A:P, но разным количеством строк - от 10 до 60).
Я несколько модифицировал предложенный Pelena код
Цитата
Sub www()
Dim sh As Worksheet
For Each sh In Sheets
sh.PageSetup.PrintArea = "$A$1:$C$10"
Next
End Sub

и использовал в многолистовой книге следующий макрос:
[vba]
Код
Sub ЗадатьОбластьПечатиДляВсехЛистов()
     Dim sh As Worksheet
     For Each sh In Sheets
         'sh.PageSetup.PrintArea = "$A$1:$C$10"
         sh.PageSetup.PrintArea = _
         ActiveCell.CurrentRegion.Address
     Next
End Sub
[/vba]
Однако в случае с макросом Pelen’ы область печати задается правильно и пустые страницы не распечатываются, а в случае с моим модицицированным макросом, кроме страницы с данными выводятся на печать две-три пустых.
Прошу помощи.
Спасибо.
 
Ответить
СообщениеПрошу помощи в доработке макроса, чтобы автоматически задавать область печати на нескольких листах книги в пределах имеющихся значений.
Прочитал форум нашел интересный топик - Задать одинаковую область печати для всех листов книги.
Но отличие моей ситуации от предложенного в том топике решения заключается в том, что у меня на разных листах должна быть разная область печати, так как разный объем представленных на листах данных (таблицы с столбцами A:P, но разным количеством строк - от 10 до 60).
Я несколько модифицировал предложенный Pelena код
Цитата
Sub www()
Dim sh As Worksheet
For Each sh In Sheets
sh.PageSetup.PrintArea = "$A$1:$C$10"
Next
End Sub

и использовал в многолистовой книге следующий макрос:
[vba]
Код
Sub ЗадатьОбластьПечатиДляВсехЛистов()
     Dim sh As Worksheet
     For Each sh In Sheets
         'sh.PageSetup.PrintArea = "$A$1:$C$10"
         sh.PageSetup.PrintArea = _
         ActiveCell.CurrentRegion.Address
     Next
End Sub
[/vba]
Однако в случае с макросом Pelen’ы область печати задается правильно и пустые страницы не распечатываются, а в случае с моим модицицированным макросом, кроме страницы с данными выводятся на печать две-три пустых.
Прошу помощи.
Спасибо.

Автор - pashkovsky
Дата добавления - 29.09.2014 в 12:46
Pelena Дата: Понедельник, 29.09.2014, 14:22 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19185
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
1) Проверьте, что выводит ActiveCell.CurrentRegion.Address, возможно, "лишние" ячейки
2) Возможно, область не помещается на один лист

В общем, без файла с примером - угадай-ка


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение1) Проверьте, что выводит ActiveCell.CurrentRegion.Address, возможно, "лишние" ячейки
2) Возможно, область не помещается на один лист

В общем, без файла с примером - угадай-ка

Автор - Pelena
Дата добавления - 29.09.2014 в 14:22
AndreTM Дата: Понедельник, 29.09.2014, 14:28 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
ActiveCell.CurrentRegion.Address
Проверьте, что выводит ActiveCell.CurrentRegion.Address
Вообще-то, насколько я понимаю, ActiveCell в момент исполнения макроса - это одна-единственная ячейка на текущем листе. От того,что вы обращаетесь к колллекций Sheets - ActiveCell не поменяется :)

Надо использовать что-то вроде
[vba]
Код
     For Each sh In Sheets
          sh.PageSetup.PrintArea = _
               Intersect(sh.Range("A:P"), sh.usedrange).Address
      Next
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
ActiveCell.CurrentRegion.Address
Проверьте, что выводит ActiveCell.CurrentRegion.Address
Вообще-то, насколько я понимаю, ActiveCell в момент исполнения макроса - это одна-единственная ячейка на текущем листе. От того,что вы обращаетесь к колллекций Sheets - ActiveCell не поменяется :)

Надо использовать что-то вроде
[vba]
Код
     For Each sh In Sheets
          sh.PageSetup.PrintArea = _
               Intersect(sh.Range("A:P"), sh.usedrange).Address
      Next
[/vba]

Автор - AndreTM
Дата добавления - 29.09.2014 в 14:28
pashkovsky Дата: Понедельник, 29.09.2014, 19:29 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 40% ±

Уважаемые Pelena & AndreTM. Спасибо за Ваши советы.
Прошу прощение за задержку с ответом - был забанен за нарушение правил форума. Виноват :(

Усовершенствовал макрос с учетом предложений AndreTM.
Однако в процессе доработки понял, почему у меня появляется больше страниц - наверное, из-за работы другого макроса по автонумерации строк, которым вставляется формула расчета номеров строк.
По всей видимости этот макрос и нарушает стройную работу макроса по заданию области печати?
Прилагаю файл.
К сообщению приложен файл: report01.xls (73.0 Kb)
 
Ответить
СообщениеУважаемые Pelena & AndreTM. Спасибо за Ваши советы.
Прошу прощение за задержку с ответом - был забанен за нарушение правил форума. Виноват :(

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

Автор - pashkovsky
Дата добавления - 29.09.2014 в 19:29
AndreTM Дата: Понедельник, 29.09.2014, 22:08 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
К сообщению приложен файл: report01.xls(73Kb)
А, даже так...
Первое - избавьтесь от Select..Selection - почитайте, пожалуйста.
Второе - используйте либо формулы, либо макросы (код). Но не одновременно. Вы просто нарушаете логику использования - формулы считают, что их рабочую область никто не трогает (а когдатрогает - они возбуждённо пересчитываются), а макросы считают, что работают с данными, а не результатами вычислений, и что пустая ячейка - это именно незанятая ячейка, а не "пустая строка", полученная в результате вычислений формул или формата на листе :)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
К сообщению приложен файл: report01.xls(73Kb)
А, даже так...
Первое - избавьтесь от Select..Selection - почитайте, пожалуйста.
Второе - используйте либо формулы, либо макросы (код). Но не одновременно. Вы просто нарушаете логику использования - формулы считают, что их рабочую область никто не трогает (а когдатрогает - они возбуждённо пересчитываются), а макросы считают, что работают с данными, а не результатами вычислений, и что пустая ячейка - это именно незанятая ячейка, а не "пустая строка", полученная в результате вычислений формул или формата на листе :)

Автор - AndreTM
Дата добавления - 29.09.2014 в 22:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос (Задать область печати на нескольких листах) (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!