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

Вход

Регистрация

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

 

= Мир MS Excel/Адрес первой и последней ячейки каждой страницы при печати - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Адрес первой и последней ячейки каждой страницы при печати (Макросы/Sub)
Адрес первой и последней ячейки каждой страницы при печати
Dмитрий Дата: Суббота, 09.08.2014, 19:03 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Всем Добрый День! Ребята, подскажите, пожалуйста, как решить данную проблему:
Есть два листа. На первом записаны данные. Количество данных изначально неизвестно. Ширина строк может быть разной. Можно ли средствами VBA определить начало и конец каждой страницы при печати (адрес первой и последней ячейки), и внести эти номера, скажем на Лист2 ??? Буду очень признателен за любую помощь. На листе 2 ячейки красным шрифтом заполнены вручную, как пример того, что должно получиться
К сообщению приложен файл: 3992041.xlsb (21.4 Kb)
 
Ответить
СообщениеВсем Добрый День! Ребята, подскажите, пожалуйста, как решить данную проблему:
Есть два листа. На первом записаны данные. Количество данных изначально неизвестно. Ширина строк может быть разной. Можно ли средствами VBA определить начало и конец каждой страницы при печати (адрес первой и последней ячейки), и внести эти номера, скажем на Лист2 ??? Буду очень признателен за любую помощь. На листе 2 ячейки красным шрифтом заполнены вручную, как пример того, что должно получиться

Автор - Dмитрий
Дата добавления - 09.08.2014 в 19:03
ikki Дата: Суббота, 09.08.2014, 20:25 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
если нет скрытых строк:[vba]
Код
Sub Макрос1()
     Application.ScreenUpdating = False
     With Sheets(2)
           .Range(.[c4], .Cells(.Rows.Count, "c").End(xlUp)).Resize(, 3).ClearContents
         Sheets(1).Activate: ActiveWindow.View = xlPageBreakPreview
         .[d4] = Sheets(1).[a1].Value
         For i = 1 To Sheets(1).HPageBreaks.Count
             Debug.Print i, Sheets(1).HPageBreaks(i).Location.Address
             .Cells(i + 3, "c") = "стр." & i
             .Cells(i + 4, "d") = Sheets(1).HPageBreaks(i).Location.Value
             .Cells(i + 3, "e") = Sheets(1).HPageBreaks(i).Location.Offset(-1).Value
         Next
         .Cells(i + 3, "c") = "стр." & i
         .Cells(i + 3, "e") = Sheets(1).Cells(Rows.Count, "a").End(xlUp).Value
         ActiveWindow.View = xlNormalView
         .Activate
     End With
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеесли нет скрытых строк:[vba]
Код
Sub Макрос1()
     Application.ScreenUpdating = False
     With Sheets(2)
           .Range(.[c4], .Cells(.Rows.Count, "c").End(xlUp)).Resize(, 3).ClearContents
         Sheets(1).Activate: ActiveWindow.View = xlPageBreakPreview
         .[d4] = Sheets(1).[a1].Value
         For i = 1 To Sheets(1).HPageBreaks.Count
             Debug.Print i, Sheets(1).HPageBreaks(i).Location.Address
             .Cells(i + 3, "c") = "стр." & i
             .Cells(i + 4, "d") = Sheets(1).HPageBreaks(i).Location.Value
             .Cells(i + 3, "e") = Sheets(1).HPageBreaks(i).Location.Offset(-1).Value
         Next
         .Cells(i + 3, "c") = "стр." & i
         .Cells(i + 3, "e") = Sheets(1).Cells(Rows.Count, "a").End(xlUp).Value
         ActiveWindow.View = xlNormalView
         .Activate
     End With
End Sub
[/vba]

Автор - ikki
Дата добавления - 09.08.2014 в 20:25
Dмитрий Дата: Суббота, 09.08.2014, 22:07 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
ikki, большое спасибо. Только лишь, я хотел, чтобы записывались адреса первых и последних ячеек, а не их содержимое. Как это можно поправить с наименьшими затратами? Может переводить курсив в первую и последнюю ячейку (Select) и записывать их адреса (ActiveCell) или в конце пробегать еще одним циклом с поиском совпадений
 
Ответить
Сообщениеikki, большое спасибо. Только лишь, я хотел, чтобы записывались адреса первых и последних ячеек, а не их содержимое. Как это можно поправить с наименьшими затратами? Может переводить курсив в первую и последнюю ячейку (Select) и записывать их адреса (ActiveCell) или в конце пробегать еще одним циклом с поиском совпадений

Автор - Dмитрий
Дата добавления - 09.08.2014 в 22:07
ikki Дата: Суббота, 09.08.2014, 22:13 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
все .Value (четыре штуки) поменяйте на .Address


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениевсе .Value (четыре штуки) поменяйте на .Address

Автор - ikki
Дата добавления - 09.08.2014 в 22:13
Dмитрий Дата: Суббота, 09.08.2014, 22:22 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Спасибо. Работает
 
Ответить
СообщениеСпасибо. Работает

Автор - Dмитрий
Дата добавления - 09.08.2014 в 22:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Адрес первой и последней ячейки каждой страницы при печати (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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