добрый есть список абонентов - размер листа несколько меньше формата А6 - нужно согласно этого формата расставить разрывы страниц - при условии что каждый город начинается с отдельного листа - т.е. после последнего разрыва (он же новый город) до следующего разрыва (следующий город) если количество строк больше чем определенное добавить разрыв начало городов можно проставить вручную можно и автоматом по условию пример зы - в примере не указал что в кое где вместо номера может быть пустая ячейка - начало/конец города по этому параметру не найти...
добрый есть список абонентов - размер листа несколько меньше формата А6 - нужно согласно этого формата расставить разрывы страниц - при условии что каждый город начинается с отдельного листа - т.е. после последнего разрыва (он же новый город) до следующего разрыва (следующий город) если количество строк больше чем определенное добавить разрыв начало городов можно проставить вручную можно и автоматом по условию пример зы - в примере не указал что в кое где вместо номера может быть пустая ячейка - начало/конец города по этому параметру не найти...luny
Сообщение отредактировал luny - Понедельник, 10.11.2014, 12:24
пока идея какая 1) ищем циклом последний разрыв страницы - это будет переменная L 2) ЕСЛИ диапазон строк rw1 от L до L-30 (30 это количество строк в странице) не содержит в 4 ряду маркер начала города (символ *) то L-30 разрыв страницы 3) если есть символ * то rw1 разрыв страницы
ну я думаю вы поняли что я недалекий и помогите с реализацией
пока идея какая 1) ищем циклом последний разрыв страницы - это будет переменная L 2) ЕСЛИ диапазон строк rw1 от L до L-30 (30 это количество строк в странице) не содержит в 4 ряду маркер начала города (символ *) то L-30 разрыв страницы 3) если есть символ * то rw1 разрыв страницы
ну я думаю вы поняли что я недалекий и помогите с реализациейluny
сколько? точно, в граммах По поводу размера бумаги. Ставьте любой виртуальный принтер, выбираете его по умолчанию, создаете в настройках нужный формат бумаги. После этого в excel можно выбрать созданный формат в качестве размера листа и не нужно будет считать строки.
в файл добавил 2 именованных диапазона [vba]
Код
Sub QWE() Dim dic, cell As Range, arr, k& Set dic = CreateObject("scripting.dictionary") For Each cell In [города] dic.Add [список].Find(cell).Row, cell.Value Next arr = dic.keys For k = 1 To UBound(arr) Me.HPageBreaks.Add before:=Range("список")(arr(k)) Next Set dic = Nothing End Sub
сколько? точно, в граммах По поводу размера бумаги. Ставьте любой виртуальный принтер, выбираете его по умолчанию, создаете в настройках нужный формат бумаги. После этого в excel можно выбрать созданный формат в качестве размера листа и не нужно будет считать строки.
в файл добавил 2 именованных диапазона [vba]
Код
Sub QWE() Dim dic, cell As Range, arr, k& Set dic = CreateObject("scripting.dictionary") For Each cell In [города] dic.Add [список].Find(cell).Row, cell.Value Next arr = dic.keys For k = 1 To UBound(arr) Me.HPageBreaks.Add before:=Range("список")(arr(k)) Next Set dic = Nothing End Sub
формат высота 13см * ширина 9 см на печать будет выводится в формате 4 страницы на лист - т.к. предлагаете вы не получается - уже пробовал - принтер -гад- выводит по 1 странице на листе почему то - посему лучше дробить по 30 строк и голова не болеть
krosav4ig, городов 82 шт.... они иногда без моего ведома меняются - отследить есть ли " * " реально проще - ИМХО
формат высота 13см * ширина 9 см на печать будет выводится в формате 4 страницы на лист - т.к. предлагаете вы не получается - уже пробовал - принтер -гад- выводит по 1 странице на листе почему то - посему лучше дробить по 30 строк и голова не болетьluny
помогите корректно задать диапазон For rw1 = i To (i-30)
[vba]
Код
Sub Test() With ActiveSheet If .HPageBreaks.Count > 0 Then Dim pb As HPageBreak, rngHPB As Range Set rngHPB = .HPageBreaks(.HPageBreaks.Count).Location i = rngHPB.Row 'положение последнего разрыва For Each pb In .HPageBreaks Set rngHPB = pb.Location i = rngHPB.Row - 1 'Номер строки перед разрывом страницы For rw1 = i To (i-30) If .Cells(rw1, 3) = "=" Then 'проверка есть ли в диапазоне 30 строк новый город .HPageBreaks.Add Before:=Cells(rw1-1, 1) 'добавить розрыв строки перед новым городом End If Next pb End If End With End Sub
[/vba]
помогите корректно задать диапазон For rw1 = i To (i-30)
[vba]
Код
Sub Test() With ActiveSheet If .HPageBreaks.Count > 0 Then Dim pb As HPageBreak, rngHPB As Range Set rngHPB = .HPageBreaks(.HPageBreaks.Count).Location i = rngHPB.Row 'положение последнего разрыва For Each pb In .HPageBreaks Set rngHPB = pb.Location i = rngHPB.Row - 1 'Номер строки перед разрывом страницы For rw1 = i To (i-30) If .Cells(rw1, 3) = "=" Then 'проверка есть ли в диапазоне 30 строк новый город .HPageBreaks.Add Before:=Cells(rw1-1, 1) 'добавить розрыв строки перед новым городом End If Next pb End If End With End Sub
обнаружил что в макросе ошибка - расстановку границ надо делать сверху вниз - а не как у меня - в цикле проверки есть ли в 30 строках сверху новый город непонятно как задать что нового города не было и поставить на 30 строке разрыв страницы - if then наверное не сработают - do while - наверное то же - нужен счетчик сколько раз в диапазоне 30 строк был маркер нового города
обнаружил что в макросе ошибка - расстановку границ надо делать сверху вниз - а не как у меня - в цикле проверки есть ли в 30 строках сверху новый город непонятно как задать что нового города не было и поставить на 30 строке разрыв страницы - if then наверное не сработают - do while - наверное то же - нужен счетчик сколько раз в диапазоне 30 строк был маркер нового городаluny
Sub Test1() With ActiveSheet If .HPageBreaks.Count > 0 Then Dim pb As HPageBreak, rngHPB As Range Set rngHPB = .HPageBreaks(.HPageBreaks.Count).Location i = rngHPB.Row 'положение последнего разрыва For Each pb In .HPageBreaks Set rngHPB = pb.Location i = rngHPB.Row - 1 'Номер строки перед разрывом страницы k = 1 Do While k = i For t = k To i * 30 If Cells(t, 3) = "*" Then ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(t, 1) k = k + t Else: ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(k + 30, 1) k = k + 30 End If Next Exit For
Loop Next pb End If End With MsgBox "Закончено" End Sub
[/vba]
почему то не работает - помогите
[vba]
Код
Sub Test1() With ActiveSheet If .HPageBreaks.Count > 0 Then Dim pb As HPageBreak, rngHPB As Range Set rngHPB = .HPageBreaks(.HPageBreaks.Count).Location i = rngHPB.Row 'положение последнего разрыва For Each pb In .HPageBreaks Set rngHPB = pb.Location i = rngHPB.Row - 1 'Номер строки перед разрывом страницы k = 1 Do While k = i For t = k To i * 30 If Cells(t, 3) = "*" Then ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(t, 1) k = k + t Else: ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(k + 30, 1) k = k + 30 End If Next Exit For
Loop Next pb End If End With MsgBox "Закончено" End Sub
luny, Вы уже столько тем однотипных насоздавали, что можно запутаться. Я правильно понимаю: есть таблица из двух столбцов: в первом число, во втором текст. В третьем столбце напротив названия города стоит *. Нужно расставить разрывы страниц по * либо, если между звёздочками больше 30 строк, то дополнительно через каждые 30 строк после *. Так?
luny, Вы уже столько тем однотипных насоздавали, что можно запутаться. Я правильно понимаю: есть таблица из двух столбцов: в первом число, во втором текст. В третьем столбце напротив названия города стоит *. Нужно расставить разрывы страниц по * либо, если между звёздочками больше 30 строк, то дополнительно через каждые 30 строк после *. Так?Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, [offtop]пусть это однотипные темы но они решают вопрос (пусть один и тот же) разными способами - вопрос "2+2=" эксель может дать ответ десятком способом - глупо пользоваться только одним - под конкретный способ тема лежит в своей части форума (искренне не понимаю, что не понравилось серж 007, когда он рейтинг мне понизил...) ... Да этот макрос возможно будет частью следующего - НО он является самостоятельной частью - может быть кому то полезен ...в инете полно тем типа - разрыв страниц после слова ИТОГ или ОТЧЕТ - чем моя хуже...- замените город № словом отчет если не нравиться...
Нужно расставить разрывы страниц по * либо, если между звёздочками больше 30 строк, то дополнительно через каждые 30 строк после *. Так?
правильно
Pelena, [offtop]пусть это однотипные темы но они решают вопрос (пусть один и тот же) разными способами - вопрос "2+2=" эксель может дать ответ десятком способом - глупо пользоваться только одним - под конкретный способ тема лежит в своей части форума (искренне не понимаю, что не понравилось серж 007, когда он рейтинг мне понизил...) ... Да этот макрос возможно будет частью следующего - НО он является самостоятельной частью - может быть кому то полезен ...в инете полно тем типа - разрыв страниц после слова ИТОГ или ОТЧЕТ - чем моя хуже...- замените город № словом отчет если не нравиться...
Sub Test1() Dim k&, nrow&, t& With ActiveSheet k = 1 nrow = .Cells(Rows.Count, 3).End(xlUp).Row Do While k <= nrow t = WorksheetFunction.Min(.Range(Cells(k, 3), Cells(nrow, 3)).Find("*").Row, t + 30) .HPageBreaks.Add Before:=Cells(t, 1) k = t + 1 Loop End With MsgBox "Закончено" End Sub
[/vba]
Такой вариант посмотрите [vba]
Код
Sub Test1() Dim k&, nrow&, t& With ActiveSheet k = 1 nrow = .Cells(Rows.Count, 3).End(xlUp).Row Do While k <= nrow t = WorksheetFunction.Min(.Range(Cells(k, 3), Cells(nrow, 3)).Find("*").Row, t + 30) .HPageBreaks.Add Before:=Cells(t, 1) k = t + 1 Loop End With MsgBox "Закончено" End Sub
Serge_007, [offtop]я неверно выразился про замечания...причину я видел - я не понял как она связана со мной... - в 1 случае не было примера - хотя он был - кривой худой но был - по второму - печать 4 страниц и копирование страниц макросом разве одно и то же - да даже если одно и то же название - мне может было интересно как конкретную задачу можно решить различными способами - в первом случае например при помощи функций или возможностей принтера - во второй только макросом... - еще момент вы похоже мне сообщение оставили - вместо него вылазит сообщение - обратитесь к администрации чтоб прочесть - а обратиться не могу т.к. у администрации стоит запрет на письма от таких как я... ЫШО - я не ищу справедливости я просто донес информацию
Serge_007, [offtop]я неверно выразился про замечания...причину я видел - я не понял как она связана со мной... - в 1 случае не было примера - хотя он был - кривой худой но был - по второму - печать 4 страниц и копирование страниц макросом разве одно и то же - да даже если одно и то же название - мне может было интересно как конкретную задачу можно решить различными способами - в первом случае например при помощи функций или возможностей принтера - во второй только макросом... - еще момент вы похоже мне сообщение оставили - вместо него вылазит сообщение - обратитесь к администрации чтоб прочесть - а обратиться не могу т.к. у администрации стоит запрет на письма от таких как я... ЫШО - я не ищу справедливости я просто донес информациюluny