请求编写‘ฟอร์ม’工作表指定格式打印的VBA宏(关联按钮)
修正后的VBA打印宏代码
原代码存在的问题:
- 页脚区域引用错误,实际要求是
A87:S96,原代码误用了U10:AM19 - 重复定义了
PrintFormSheet过程,属于语法错误 - PrintArea拼接逻辑错误,无法实现页眉、内容、页脚的每页重复显示
- 手动添加固定位置分页符,不符合“内容高度超过1页时自动分页”的要求
正确代码:
Sub PrintFormSheet() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("ฟอร์ม") ' 重置所有页面设置,避免之前的设置干扰 ws.PageSetup.PrintArea = "" ws.ResetAllPageBreaks With ws.PageSetup ' 设置纸张规格为A4 .PaperSize = xlPaperA4 ' 设置纵向打印 .Orientation = xlPortrait ' 设置页边距(可根据实际需求调整) .TopMargin = Application.InchesToPoints(0.5) .BottomMargin = Application.InchesToPoints(0.5) .LeftMargin = Application.InchesToPoints(0.5) .RightMargin = Application.InchesToPoints(0.5) ' 设置每页顶部重复显示A1:S9(包含页眉A1:S7和列标题A9:S9) .PrintTitleRows = "$1:$9" .PrintTitleColumns = "" ' 设置打印区域为整个需要的范围:页眉+内容+页脚 .PrintArea = ws.Range("A1:S96").Address ' 设置列宽适配1页,高度自动分页 .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = False ' 清空默认的页眉页脚,避免干扰工作表内的页眉页脚区域 .CenterHeader = "" .CenterFooter = "" .LeftHeader = "" .LeftFooter = "" .RightHeader = "" .RightFooter = "" End With ' 显示打印预览 ws.PrintPreview End Sub
修改说明:
- 修正了页脚区域的引用,将打印范围扩展至
A1:S96,包含要求的页眉、内容和页脚区域 - 移除了重复的过程定义和手动添加分页符的逻辑,依赖Excel自动根据内容高度分页
- 通过
PrintTitleRows = "$1:$9"实现每页顶部重复显示页眉(A1:S7)和列标题(A9:S9) - 重置页面设置和分页符,确保每次运行宏时使用干净的配置
- 清空默认的Excel页眉页脚,避免与工作表内的自定义页眉页脚区域冲突
内容的提问来源于stack exchange,提问作者กิตติ์ธนา คํามูล
相关产品推荐
相关产品推荐

