首页 > 解决方案 > 将打印标题列设置为动态范围

问题描述

我有 100 页需要打印的数据,并且我希望在打印的每一页上都有一个标题和一个侧栏。

我可以使用我创建的动态范围手动执行此操作,但我必须手动将范围名称输入到页面布局设置中。我还尝试使用宏来使用动态范围执行此操作,但是在运行以下脚本时收到错误消息;

Sheets("1. Paste Raw Data").Select
ActiveSheet.PageSetup.PrintTitleColumns = Sheets("1. Paste Raw Data").Range("Print_Side")
ActiveSheet.PageSetup.PrintTitleRows = Sheets("1. Paste Raw Data").Range("Print_Header")

我还尝试使用 excel 定义的范围(名为 Print_Titles)在打印页面时更改这些设置,但它不允许我输入多个动态范围。Print_Titles 当前在名称管理器中是这样定义的;

='1. Paste Raw Data'!$B:$B,'1. Paste Raw Data'!$4:$6

有没有办法使用两个动态范围来定义行和列的标题?

标签: excelvba

解决方案


恐怕您正在尝试做的事情不被 Excel 接受...

它允许设置PrintTitleRowslike Rows,而不是范围(如您的动态范围)。Excel 只允许ROWS重复设置。如果使用范围(手动选择),Excel 会扩展范围,以包括整行。就范围而言,它只接受一定范围的行。

如果您坚持使用您的动态范围,您可以使用:

ActiveSheet.PageSetup.PrintTitleRows = _
    ActiveSheet.Rows(Names("Print_Header").RefersToRange.Row).Address

但这就像您用右臂挠头一样...

您也可以对 进行类似的处理PrintTitleColumns,但仅使用 of 将获得相同的结果:

ActiveSheet.PageSetup.PrintTitleColumns = "$A:$A"

即使您手动尝试设置这些参数,您也会发现 Excel 不允许选择范围。它根据设置的特殊性将选择扩展到整行或整列。


推荐阅读