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

Вход

Регистрация

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

 

= Мир MS Excel/Изменить макрос, оптимизировать указание диапазонов - Мир MS Excel

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

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

[vba]
Код
Sub Макрос_печати_текущей_страницы()

For Each iAddress In Array("B2:J32", "B33:J63", "B64:J94", "B95:J125", "B126:J156", "B157:J187", "B188:J218", "B219:J249", "B250:J280", "B281:J311", "B312:J342", "B343:J373", "B374:J404", "B405:J435", "B436:J466", "B467:J497", "B498:J528", "B529:J559", "B560:J590", "B591:J621", "B622:J652", "B653:J683", "B684:J714", "B715:J745", "B746:J776", "B777:J807", "B808:J838", "B839:J869", "B870:J900", "B901:J931", "B932:J962", "B963:J993", "B994:J1024", "B1025:J1055", "B1056:J1086", "B1087:J1117", "B1118:J1148", "B1149:J1179", "B1180:J1210", "B1211:J1241", "B1242:J1272", "B1273:J1303", "B1304:J1334", "B1335:J1365", "B1366:J1396", "B1397:J1427", "B1428:J1458", "B1459:J1489")
If Not Intersect(ActiveCell, Range(iAddress)) Is Nothing Then
ActiveSheet.PageSetup.PrintArea = iAddress:

ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=3

Exit Sub
End If
Next
Exit Sub
[/vba]


Сообщение отредактировал genn931 - Воскресенье, 29.01.2017, 17:19
 
Ответить
СообщениеПрименяю макрос для фиксированного разделения листа на страницы, что бы потом выводить именно ту страницу что активна, но так страниц нужно примерно 700, то так указывать диапазоны и долго, и текста много, и есть вероятность ошибки. Можно как либо изменить что бы не вручную вводить эти диапазоны?

[vba]
Код
Sub Макрос_печати_текущей_страницы()

For Each iAddress In Array("B2:J32", "B33:J63", "B64:J94", "B95:J125", "B126:J156", "B157:J187", "B188:J218", "B219:J249", "B250:J280", "B281:J311", "B312:J342", "B343:J373", "B374:J404", "B405:J435", "B436:J466", "B467:J497", "B498:J528", "B529:J559", "B560:J590", "B591:J621", "B622:J652", "B653:J683", "B684:J714", "B715:J745", "B746:J776", "B777:J807", "B808:J838", "B839:J869", "B870:J900", "B901:J931", "B932:J962", "B963:J993", "B994:J1024", "B1025:J1055", "B1056:J1086", "B1087:J1117", "B1118:J1148", "B1149:J1179", "B1180:J1210", "B1211:J1241", "B1242:J1272", "B1273:J1303", "B1304:J1334", "B1335:J1365", "B1366:J1396", "B1397:J1427", "B1428:J1458", "B1459:J1489")
If Not Intersect(ActiveCell, Range(iAddress)) Is Nothing Then
ActiveSheet.PageSetup.PrintArea = iAddress:

ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=3

Exit Sub
End If
Next
Exit Sub
[/vba]

Автор - genn931
Дата добавления - 29.01.2017 в 17:11
Pelena Дата: Воскресенье, 29.01.2017, 19:33 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Применяю макрос для фиксированного разделения листа на страницы

Покажите, как Вы это делаете. А лучше приложите кусочек файла


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Применяю макрос для фиксированного разделения листа на страницы

Покажите, как Вы это делаете. А лучше приложите кусочек файла

Автор - Pelena
Дата добавления - 29.01.2017 в 19:33
genn931 Дата: Воскресенье, 29.01.2017, 20:16 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Покажите, как Вы это делаете. А лучше приложите кусочек файла

К сожалению полная рабочая формула на работе, но сделана на основе той что выше привел(к сожалению не знаток синтаксиса в VBA) но смысл такой, с помощью указанных ("B2:J32", "B33:J63", "B64:J94", "B95:J125" и т.д.) задаем границы страниц и их кол-во на листе. Потом делаем активным ту страницу на которой стоит указатель, окрашиваем эту страницу в цвет, и посылаем на печать именно эту страницу. Так я задал границы для 69 страниц. А нужно для 750 страниц.


Сообщение отредактировал genn931 - Воскресенье, 29.01.2017, 20:18
 
Ответить
Сообщение
Покажите, как Вы это делаете. А лучше приложите кусочек файла

К сожалению полная рабочая формула на работе, но сделана на основе той что выше привел(к сожалению не знаток синтаксиса в VBA) но смысл такой, с помощью указанных ("B2:J32", "B33:J63", "B64:J94", "B95:J125" и т.д.) задаем границы страниц и их кол-во на листе. Потом делаем активным ту страницу на которой стоит указатель, окрашиваем эту страницу в цвет, и посылаем на печать именно эту страницу. Так я задал границы для 69 страниц. А нужно для 750 страниц.

Автор - genn931
Дата добавления - 29.01.2017 в 20:16
Pelena Дата: Воскресенье, 29.01.2017, 20:22 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Ну, наверняка же эти диапазоны к чему-то привязаны: шапка таблицы или какое-то название или подписи или к разрыву страницы. Нет?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНу, наверняка же эти диапазоны к чему-то привязаны: шапка таблицы или какое-то название или подписи или к разрыву страницы. Нет?

Автор - Pelena
Дата добавления - 29.01.2017 в 20:22
Hugo Дата: Воскресенье, 29.01.2017, 20:36 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
700 говорите?
[vba]
Код
Sub Макрос_печати_текущей_страницы()

    For i = 2 To 700 * 30 Step 31
        iAddress = "B" & i & ":J" & i + 30
        '    Debug.Print iAddress
        '    For Each iAddress In Array("B2:J32", "B33:J63", "B64:J94", "B95:J125", "B126:J156", ...
        If Not Intersect(ActiveCell, Range(iAddress)) Is Nothing Then
            ActiveSheet.PageSetup.PrintArea = iAddress:

            ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=3

            Exit Sub
        End If
    Next
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение700 говорите?
[vba]
Код
Sub Макрос_печати_текущей_страницы()

    For i = 2 To 700 * 30 Step 31
        iAddress = "B" & i & ":J" & i + 30
        '    Debug.Print iAddress
        '    For Each iAddress In Array("B2:J32", "B33:J63", "B64:J94", "B95:J125", "B126:J156", ...
        If Not Intersect(ActiveCell, Range(iAddress)) Is Nothing Then
            ActiveSheet.PageSetup.PrintArea = iAddress:

            ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=3

            Exit Sub
        End If
    Next
End Sub
[/vba]

Автор - Hugo
Дата добавления - 29.01.2017 в 20:36
genn931 Дата: Воскресенье, 29.01.2017, 20:47 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Ну, наверняка же эти диапазоны к чему-то привязаны: шапка таблицы или какое-то название или подписи или к разрыву страницы. Нет?

Да как раз этот макрос и создает разрывы страниц.
 
Ответить
Сообщение
Ну, наверняка же эти диапазоны к чему-то привязаны: шапка таблицы или какое-то название или подписи или к разрыву страницы. Нет?

Да как раз этот макрос и создает разрывы страниц.

Автор - genn931
Дата добавления - 29.01.2017 в 20:47
genn931 Дата: Воскресенье, 29.01.2017, 20:48 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

700 говорите?

Спасибо огромное!!!! Да вы точно поняли смысл того чего я хотел )))
 
Ответить
Сообщение
700 говорите?

Спасибо огромное!!!! Да вы точно поняли смысл того чего я хотел )))

Автор - genn931
Дата добавления - 29.01.2017 в 20:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменить макрос, оптимизировать указание диапазонов (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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