2012-01-25 3 views
3

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

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

ответ

0

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

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

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

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

3

Самый простой способ сделать это - перейти к представлению макета страницы, затем использовать 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).

Смежные вопросы