VBA Excel - перейти на следующую страницу в представлении макета страницы - PullRequest
3 голосов
/ 25 января 2012

Я копирую различные диапазоны на новый лист Excel и ищу решение для ссылки на следующую страницу или любую конкретную страницу в режиме макета страницы.

Я уже настроил макет страницы с полями, заголовками и другим форматированием и хочу заполнить свой отчет на основе макета, представленного на экране.Поскольку макет настроен, я могу жестко кодировать ссылки на ячейки, чтобы разместить свои диапазоны, но я бы лучше определил это динамически.Есть какие-нибудь решения?

Ответы [ 2 ]

3 голосов
/ 23 августа 2012

Самый простой способ сделать это - перейти в представление макета страницы, а затем использовать LargeScroll для перехода на нужную страницу.

ActiveWindow.View = xlPageLayoutView     '<--- Changes view to "Page Layout"
ActiveWindow.LargeScroll 1               '<--- Scrolls down a full page 1 time

«1» - это число LargeScrolls, которое вы хотите выполнить, поэтому в приведенном выше примере вы бы опустились на 1 страницу ниже, где бы вы ни находились. Это будет работать с любой страницы в представлении макета страницы.

Вот пример, если вы хотите перейти на страницу 2, но не знаете, на какой странице ваш код оставил вас. Он использует cells(1,1), чтобы перевести вас в первую ячейку рабочего листа, которая будет страницей 1.

Cells(1,1).Activate                      '<--- Takes you to first cell in your worksheet
ActiveWindow.View = xlPageLayoutView     
ActiveWindow.LargeScroll 1

Вы можете изменить «1» на любое число. Помните, что это работает как смещение, поэтому, если вы начинаете в ячейке A1 и хотите перейти на страницу 3, вы будете прокручивать только 2 раза, а не 3. Код будет выглядеть как ActiveWindow.LargeScroll 2, потому что он уводит вас 2 с текущей страницы ( 2 + 1).

0 голосов
/ 25 января 2012

Это сложный вопрос, но можно предположить, что если у вас уже есть набор макетов, то считайте его страницей шаблона.Есть трюк, который можно использовать, чтобы выяснить, если вы, так сказать, «выйдете за пределы досягаемости».Прежде чем копировать новый диапазон на лист шаблона, определите высоту копируемого содержимого и удерживайте его напротив «оставшейся» высоты места назначения (там, где страница будет разрываться).Если он выходит за пределы диапазона, переместите его на следующую страницу, чтобы не разбивать диапазоны по страницам.

Как бы вы узнали, если он выходит за пределы диапазона?Вы можете определить стандартную высоту для каждой страницы при запуске кода.Тогда уменьшите это, поскольку Вы вставляете.Этот способ позаботится о разной высоте строки, которую вы можете иметь при копировании / вставке.

Чтобы определить высоту, когда вы выбираете диапазон в коде, просто проверьте его свойство Height (Range ("A1")).Высота), и он даст вам знать, где будет лежать свойство Top следующего диапазона.Кроме того, вы можете жестко кодировать стандартную высоту (просто выделите ячейки, которые умещаются на одной странице, перейдите в непосредственное окно и введите? Selection.Height, и у вас будет стандартная высота для работы).

Надеюсь, это поможет!

...