首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否仅在打印活动工作表时运行子Workbook_BeforePrint?

是否仅在打印活动工作表时运行子Workbook_BeforePrint?
EN

Stack Overflow用户
提问于 2019-10-01 21:13:12
回答 1查看 246关注 0票数 1

我只想一次打印一张工作表(由于有大量数据,如果我打印整个工作簿,将导致1000页),但我希望在打印之前自动更新页眉。标题将有一个引用单元格的公式,并插入单元格的值。然而,Worksheet_BeforePrint似乎不是什么东西,如果只打印活动工作表,Workbook_BeforePrint就不能工作。

代码语言:javascript
运行
复制
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim rptdate As String

Dim ride As String
Dim sht As String
sht = ActiveSheet.Name
rptdate = Sheets("Inputs").Range("B3").Value
prov = Sheets("Inputs").Range("B4").Value
ride = Sheets("Inputs").Range("B5").Value
ActiveSheet.PageSetup.RightHeader = sht  & " Ride Name: " & ride & " First Report Date: " & rpdate

End Sub

我希望标题显示类似的东西:“工作表名称骑乘名称:骑第一次报告日期: rptdate”最好是在3行如上所示。如果我要打印整个工作簿,上面的代码可以工作,但当我只想打印活动的工作表时就不行了。

EN

回答 1

Stack Overflow用户

发布于 2019-10-01 22:39:46

我以前从未真正从VBA打印过,但是您也许能够使用worksheet对象中的PrintOut方法。因此,就像打印工作簿以触发Workbook_BeforePrint事件一样。不要担心,您将取消此打印作业。

代码语言:javascript
运行
复制
Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Dim rptdate As String, ride As String, ws As Worksheet
    Set ws = ActiveSheet
    rptdate = Sheets("Inputs").Range("B3").Value
    ride = Sheets("Inputs").Range("B5").Value
    ws.PageSetup.RightHeader = ws.Name & " Ride Name: " & ride & " First Report Date: " & rpdate
    ws.PrintOut

    ' Cancel the entire workbook printjob - it's as simple as changing this boolean value
    Cancel = True

End Sub

设置Cancel = True将取消整个工作簿打印,并且ws.PrintOut将仅打印活动工作表。

我很抱歉,我现在不在可以测试它的环境中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58185534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档