ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 741|回复: 10

宏设置打印区域后,添加行如何自动更新打印区域

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-30 10:55 | 显示全部楼层 |阅读模式
各位大神,我设置了打印区域,但是没有办法添加行,我的要求是最大行数到填表日期那一行,麻烦高手帮我修改一下我的代码!




Private Sub 打印评估报告附表_Click()
    ' 设置打印区域
    Worksheets("应收账款").PageSetup.PrintArea = "$A$2:$J$26"
   
    ' 打印标题
    Worksheets("应收账款").PageSetup.PrintTitleRows = "$2:$7"
   
    ' 页面设置
    With Worksheets("应收账款").PageSetup
        .LeftMargin = Application.InchesToPoints(0.5)
        .RightMargin = Application.InchesToPoints(0.5)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.5)
        .FooterMargin = Application.InchesToPoints(0.5)
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlLandscape
        .PaperSize = xlPaperA4
        .Zoom = 100
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .PrintGridlines = False
        .PrintHeadings = False
    End With
   
    ' 设置列宽
    Worksheets("应收账款").Columns("A:A").ColumnWidth = 5
    Worksheets("应收账款").Columns("B:B").ColumnWidth = 18
    Worksheets("应收账款").Columns("C:C").ColumnWidth = 10
    Worksheets("应收账款").Columns("D:D").ColumnWidth = 10
    Worksheets("应收账款").Columns("E:E").ColumnWidth = 8
    Worksheets("应收账款").Columns("F:F").ColumnWidth = 15
    Worksheets("应收账款").Columns("G:G").ColumnWidth = 15
    Range("H:H,I:I,J:J").ColumnWidth = 13

   
    ' 设置行距
    With Range("A2:J26").Rows(2)
        .RowHeight = 30
        .Font.Size = 10
        .Font.Bold = True
    End With
    Range("A3:J26").Rows.RowHeight = 15          (除了第2行,其他行距都是15)

Worksheets("应收账款").PrintPreview
End Sub

添加行之后,打印区域无法自动更新

添加行之后,打印区域无法自动更新

TA的精华主题

TA的得分主题

发表于 2023-3-30 15:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
取得有效数据区域的最大行的行号不就行了吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-31 11:25 | 显示全部楼层
怎么取呢?能帮我修改一下我的代码吗?拜托拜托

TA的精华主题

TA的得分主题

发表于 2023-3-31 12:35 | 显示全部楼层
把那句设置打印区域的去掉算了,设置好的打印区域会随着插入或删除行自动适应的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-31 13:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
半百 发表于 2023-3-31 12:35
把那句设置打印区域的去掉算了,设置好的打印区域会随着插入或删除行自动适应的。

这张表右边还有好多列内容,不是我想打印的,所以必须要设置一个打印区域

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-31 14:24 | 显示全部楼层
半百 发表于 2023-3-31 12:35
把那句设置打印区域的去掉算了,设置好的打印区域会随着插入或删除行自动适应的。

这张表右边还有好多列内容,不是我想打印的,所以必须要设置一个打印区域
捕获.PNG

TA的精华主题

TA的得分主题

发表于 2023-3-31 14:45 | 显示全部楼层
with Worksheets("应收账款")
       r=.cells(rows.count,1).end(3).row
      .range("a2:j" & r).name="'" & .name & "'!Print_Area"
end with

定義名稱設打印範圍, 比setup快多了~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-31 15:17 | 显示全部楼层
谢谢大神,完全可以。解决了我的大难题!感谢!感谢!万分感谢!

把我的代码分享给大家

Private Sub 打印评估报告附表_Click()
    ' 设置打印区域
With Worksheets("应收账款")
       r = .Cells(Rows.Count, 1).End(3).Row
      .Range("a2:j" & r).Name = "'" & .Name & "'!Print_Area"
End With
   
    ' 打印标题
    Worksheets("应收账款").PageSetup.PrintTitleRows = "$2:$7"
   
    ' 页面设置
    With Worksheets("应收账款").PageSetup
        .LeftMargin = Application.InchesToPoints(0.5)
        .RightMargin = Application.InchesToPoints(0.5)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.5)
        .FooterMargin = Application.InchesToPoints(0.5)
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlLandscape
        .PaperSize = xlPaperA4
        .Zoom = 100
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .PrintGridlines = False
        .PrintHeadings = False
    End With
   
    ' 设置列宽
    Worksheets("应收账款").Columns("A:A").ColumnWidth = 5
    Worksheets("应收账款").Columns("B:B").ColumnWidth = 18
    Worksheets("应收账款").Columns("C:C").ColumnWidth = 10
    Worksheets("应收账款").Columns("D:D").ColumnWidth = 10
    Worksheets("应收账款").Columns("E:E").ColumnWidth = 8
    Worksheets("应收账款").Columns("F:F").ColumnWidth = 15
    Worksheets("应收账款").Columns("G:G").ColumnWidth = 15
    Range("H:H,I:I,J:J").ColumnWidth = 13

   
    ' 设置行距
    With Range("a2:j" & r).Rows(2)
        .RowHeight = 30
        .Font.Size = 10
        .Font.Bold = True
    End With
    Range("a3:j" & r).Rows.RowHeight = 15

Worksheets("应收账款").PrintPreview
End Sub

TA的精华主题

TA的得分主题

发表于 2023-3-31 15:46 | 显示全部楼层
阳光暖洋洋 发表于 2023-3-31 14:24
这张表右边还有好多列内容,不是我想打印的,所以必须要设置一个打印区域

不是叫你不设置打印区域,我是说你可以手动设置好打印区域,或前边的代码运行一次后,在已经有打印区域后,就不用那句代码了,打印区域就始终在那了,已后不论你是插入行还是删除行,它都会自动适应,不需要重新设置它的范围。

TA的精华主题

TA的得分主题

发表于 2023-3-31 15:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 12:25 , Processed in 0.037801 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表