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

Вход

Регистрация

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

 

= Мир MS Excel/расстановка разрыва страниц по условию - Мир MS Excel

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

Excel 2003
добрый
есть список абонентов - размер листа несколько меньше формата А6 - нужно согласно этого формата расставить разрывы страниц - при условии что каждый город начинается с отдельного листа - т.е. после последнего разрыва (он же новый город) до следующего разрыва (следующий город) если количество строк больше чем определенное добавить разрыв
начало городов можно проставить вручную можно и автоматом по условию
пример
зы - в примере не указал что в кое где вместо номера может быть пустая ячейка - начало/конец города по этому параметру не найти...


Сообщение отредактировал luny - Понедельник, 10.11.2014, 12:24
 
Ответить
Сообщениедобрый
есть список абонентов - размер листа несколько меньше формата А6 - нужно согласно этого формата расставить разрывы страниц - при условии что каждый город начинается с отдельного листа - т.е. после последнего разрыва (он же новый город) до следующего разрыва (следующий город) если количество строк больше чем определенное добавить разрыв
начало городов можно проставить вручную можно и автоматом по условию
пример
зы - в примере не указал что в кое где вместо номера может быть пустая ячейка - начало/конец города по этому параметру не найти...

Автор - luny
Дата добавления - 10.11.2014 в 12:19
luny Дата: Понедельник, 10.11.2014, 15:12 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
пока идея какая
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
Дата добавления - 10.11.2014 в 15:12
krosav4ig Дата: Понедельник, 10.11.2014, 15:53 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
несколько
сколько? точно, в граммах
По поводу размера бумаги. Ставьте любой виртуальный принтер, выбираете его по умолчанию, создаете в настройках нужный формат бумаги. После этого в 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
[/vba]
К сообщению приложен файл: 5239570.xls (34.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 10.11.2014, 16:09
 
Ответить
Сообщение
несколько
сколько? точно, в граммах
По поводу размера бумаги. Ставьте любой виртуальный принтер, выбираете его по умолчанию, создаете в настройках нужный формат бумаги. После этого в 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
[/vba]

Автор - krosav4ig
Дата добавления - 10.11.2014 в 15:53
luny Дата: Понедельник, 10.11.2014, 16:20 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
krosav4ig, городов 82 шт.... они иногда без моего ведома меняются - отследить есть ли " * " реально проще - ИМХО
сколько? точно, в граммах

формат высота 13см * ширина 9 см
на печать будет выводится в формате 4 страницы на лист - т.к. предлагаете вы не получается - уже пробовал - принтер -гад- выводит по 1 странице на листе почему то - посему лучше дробить по 30 строк и голова не болеть
 
Ответить
Сообщениеkrosav4ig, городов 82 шт.... они иногда без моего ведома меняются - отследить есть ли " * " реально проще - ИМХО
сколько? точно, в граммах

формат высота 13см * ширина 9 см
на печать будет выводится в формате 4 страницы на лист - т.к. предлагаете вы не получается - уже пробовал - принтер -гад- выводит по 1 странице на листе почему то - посему лучше дробить по 30 строк и голова не болеть

Автор - luny
Дата добавления - 10.11.2014 в 16:20
mikaelw Дата: Понедельник, 10.11.2014, 16:25 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 1 ±
Замечаний: 20% ±

Excel 2010, 2013, 2016
выводит по 1 странице на листе почему то


У меня подобная задача!

И все сработало!
 
Ответить
Сообщение
выводит по 1 странице на листе почему то


У меня подобная задача!

И все сработало!

Автор - mikaelw
Дата добавления - 10.11.2014 в 16:25
luny Дата: Понедельник, 17.11.2014, 18:57 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
помогите корректно задать диапазон
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
[/vba]

Автор - luny
Дата добавления - 17.11.2014 в 18:57
luny Дата: Вторник, 18.11.2014, 09:35 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
обнаружил что в макросе ошибка
- расстановку границ надо делать сверху вниз - а не как у меня
- в цикле проверки есть ли в 30 строках сверху новый город непонятно как задать что нового города не было и поставить на 30 строке разрыв страницы - if then наверное не сработают - do while - наверное то же - нужен счетчик сколько раз в диапазоне 30 строк был маркер нового города
 
Ответить
Сообщениеобнаружил что в макросе ошибка
- расстановку границ надо делать сверху вниз - а не как у меня
- в цикле проверки есть ли в 30 строках сверху новый город непонятно как задать что нового города не было и поставить на 30 строке разрыв страницы - if then наверное не сработают - do while - наверное то же - нужен счетчик сколько раз в диапазоне 30 строк был маркер нового города

Автор - luny
Дата добавления - 18.11.2014 в 09:35
luny Дата: Вторник, 18.11.2014, 10:22 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
почему то не работает - помогите

[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
[/vba]


Сообщение отредактировал luny - Вторник, 18.11.2014, 10:23
 
Ответить
Сообщениепочему то не работает - помогите

[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
[/vba]

Автор - luny
Дата добавления - 18.11.2014 в 10:22
Pelena Дата: Вторник, 18.11.2014, 11:25 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
luny, Вы уже столько тем однотипных насоздавали, что можно запутаться.
Я правильно понимаю: есть таблица из двух столбцов: в первом число, во втором текст. В третьем столбце напротив названия города стоит *.
Нужно расставить разрывы страниц по * либо, если между звёздочками больше 30 строк, то дополнительно через каждые 30 строк после *. Так?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеluny, Вы уже столько тем однотипных насоздавали, что можно запутаться.
Я правильно понимаю: есть таблица из двух столбцов: в первом число, во втором текст. В третьем столбце напротив названия города стоит *.
Нужно расставить разрывы страниц по * либо, если между звёздочками больше 30 строк, то дополнительно через каждые 30 строк после *. Так?

Автор - Pelena
Дата добавления - 18.11.2014 в 11:25
luny Дата: Вторник, 18.11.2014, 12:19 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Pelena, [offtop]пусть это однотипные темы но они решают вопрос (пусть один и тот же) разными способами - вопрос "2+2=" эксель может дать ответ десятком способом - глупо пользоваться только одним - под конкретный способ тема лежит в своей части форума (искренне не понимаю, что не понравилось серж 007, когда он рейтинг мне понизил...) ... Да этот макрос возможно будет частью следующего - НО он является самостоятельной частью - может быть кому то полезен ...в инете полно тем типа - разрыв страниц после слова ИТОГ или ОТЧЕТ - чем моя хуже...- замените город № словом отчет если не нравиться...

Нужно расставить разрывы страниц по * либо, если между звёздочками больше 30 строк, то дополнительно через каждые 30 строк после *. Так?

правильно
 
Ответить
СообщениеPelena, [offtop]пусть это однотипные темы но они решают вопрос (пусть один и тот же) разными способами - вопрос "2+2=" эксель может дать ответ десятком способом - глупо пользоваться только одним - под конкретный способ тема лежит в своей части форума (искренне не понимаю, что не понравилось серж 007, когда он рейтинг мне понизил...) ... Да этот макрос возможно будет частью следующего - НО он является самостоятельной частью - может быть кому то полезен ...в инете полно тем типа - разрыв страниц после слова ИТОГ или ОТЧЕТ - чем моя хуже...- замените город № словом отчет если не нравиться...

Нужно расставить разрывы страниц по * либо, если между звёздочками больше 30 строк, то дополнительно через каждые 30 строк после *. Так?

правильно

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

Excel 365 & Mac Excel
Такой вариант посмотрите
[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
[/vba]
К сообщению приложен файл: 5799161.xls (37.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТакой вариант посмотрите
[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
[/vba]

Автор - Pelena
Дата добавления - 18.11.2014 в 12:34
luny Дата: Вторник, 18.11.2014, 12:45 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Такой вариант посмотрите

о жир - спс - прикольный способ решения - подобного пока не встречал..
завтрясь попробую на оригинальном (большом) документе
 
Ответить
Сообщение
Такой вариант посмотрите

о жир - спс - прикольный способ решения - подобного пока не встречал..
завтрясь попробую на оригинальном (большом) документе

Автор - luny
Дата добавления - 18.11.2014 в 12:45
Pelena Дата: Вторник, 18.11.2014, 15:27 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
[offtop]
Даже не знаю, обидеться что ли...[/offtop]

Предыдущий макрос некорректно отрабатывал, если в последнем городе больше 30 записей. Исправленный вариант в файле
К сообщению приложен файл: 8816526.xls (60.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[offtop]
Даже не знаю, обидеться что ли...[/offtop]

Предыдущий макрос некорректно отрабатывал, если в последнем городе больше 30 записей. Исправленный вариант в файле

Автор - Pelena
Дата добавления - 18.11.2014 в 15:27
luny Дата: Вторник, 18.11.2014, 15:46 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Pelena, еще раз спс

зы - поинтересоваться хотел - мой вариант макрос вообще был ли жизнеспособным


Сообщение отредактировал luny - Вторник, 18.11.2014, 15:51
 
Ответить
СообщениеPelena, еще раз спс

зы - поинтересоваться хотел - мой вариант макрос вообще был ли жизнеспособным

Автор - luny
Дата добавления - 18.11.2014 в 15:46
Pelena Дата: Вторник, 18.11.2014, 15:58 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Ну, мне не удалось вдохнуть в него жизнь :(
Хотя я использовала его как отправную точку


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

Автор - Pelena
Дата добавления - 18.11.2014 в 15:58
luny Дата: Вторник, 18.11.2014, 17:30 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Pelena,
Даже не знаю, обидеться что ли...

[offtop]тут не на что обижаться - просто выражение эмоций - так же если б я сказал о степени вязкости вещества - в смысле - круто!
 
Ответить
СообщениеPelena,
Даже не знаю, обидеться что ли...

[offtop]тут не на что обижаться - просто выражение эмоций - так же если б я сказал о степени вязкости вещества - в смысле - круто!

Автор - luny
Дата добавления - 18.11.2014 в 17:30
Serge_007 Дата: Вторник, 18.11.2014, 17:46 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
что не понравилось серж 007, когда он рейтинг мне понизил
luny, я никогда и никому рейтинг не понижаю. Лично Вам я вынес два замечания, и их причины указаны при вынесении


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
что не понравилось серж 007, когда он рейтинг мне понизил
luny, я никогда и никому рейтинг не понижаю. Лично Вам я вынес два замечания, и их причины указаны при вынесении

Автор - Serge_007
Дата добавления - 18.11.2014 в 17:46
luny Дата: Вторник, 18.11.2014, 18:00 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Serge_007,
[offtop]я неверно выразился про замечания...причину я видел - я не понял как она связана со мной... - в 1 случае не было примера - хотя он был - кривой худой но был - по второму - печать 4 страниц и копирование страниц макросом разве одно и то же - да даже если одно и то же название - мне может было интересно как конкретную задачу можно решить различными способами - в первом случае например при помощи функций или возможностей принтера - во второй только макросом... - еще момент вы похоже мне сообщение оставили - вместо него вылазит сообщение - обратитесь к администрации чтоб прочесть - а обратиться не могу т.к. у администрации стоит запрет на письма от таких как я...
ЫШО - я не ищу справедливости я просто донес информацию
 
Ответить
СообщениеSerge_007,
[offtop]я неверно выразился про замечания...причину я видел - я не понял как она связана со мной... - в 1 случае не было примера - хотя он был - кривой худой но был - по второму - печать 4 страниц и копирование страниц макросом разве одно и то же - да даже если одно и то же название - мне может было интересно как конкретную задачу можно решить различными способами - в первом случае например при помощи функций или возможностей принтера - во второй только макросом... - еще момент вы похоже мне сообщение оставили - вместо него вылазит сообщение - обратитесь к администрации чтоб прочесть - а обратиться не могу т.к. у администрации стоит запрет на письма от таких как я...
ЫШО - я не ищу справедливости я просто донес информацию

Автор - luny
Дата добавления - 18.11.2014 в 18:00
luny Дата: Суббота, 22.11.2014, 13:19 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Pelena, добавил строку чтоб перед началом расстановки новых разрывов сносились старые - без нее макрос к старым разрывам добавляет новые..
[vba]
Код

With ActiveSheet
[b]ActiveSheet.ResetAllPageBreaks[/b]
k = 1
[/vba]


Сообщение отредактировал luny - Суббота, 22.11.2014, 13:19
 
Ответить
СообщениеPelena, добавил строку чтоб перед началом расстановки новых разрывов сносились старые - без нее макрос к старым разрывам добавляет новые..
[vba]
Код

With ActiveSheet
[b]ActiveSheet.ResetAllPageBreaks[/b]
k = 1
[/vba]

Автор - luny
Дата добавления - 22.11.2014 в 13:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » расстановка разрыва страниц по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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