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