我需要vba代码来设置Customer Receipt工作表的打印区域以包括A列到H列,从$ A $ 4开始,向下延伸到等于10 + $ G $ 10的值的行数。例如,如果$ G $ 10中的值为16,则结果打印区域为$ A $ 4:$ H $ 26。我尝试在名称管理器中使用公式,所有这些公式都导致打印整个工作表,就像没有设置打印区域一样(标准的“设置打印区域”起作用,但不是我需要的)。仅供参考,我已经为该工作表准备了以下宏:
Sub PrintCustomerReceipt()
' PrintCustomerReceipt Macro
' Macro to print 2 copies of Customer Receipt on designated printer
' Keyboard Shortcut: Ctrl+Shift+Q
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
IgnorePrintAreas:=False
End Sub
答案 0 :(得分:0)
您的问题有点不清楚;我认为您使一个简单的任务过于复杂。根据前两个句子中的示例,这是您需要的行:
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$" & (10 + Range("G10"))
当我需要按原样或修改后运行内置任务时(在这种情况下为Set Print Area
),我让Excel为我“编写代码的初稿”:
$A$4:$H$26
在生成的VBA中,我们仅看到一条重要的行:
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$26"
所以现在我们要做的就是将那条线移到您需要的过程中,并进行一些小的修改:
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$" & (10 + Range("G10"))
每次执行此行时,都会根据G10
中的值“动态”设置工作表的打印区域。
要打印,只需将标准打印命令与默认选项一起使用,或者如果您需要2份:
ActiveWindow.SelectedSheets.PrintOut Copies:=2
(不要不“忽略打印区域”。)
现在在一起:
Sub PrintCustomerReceipt()
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$" & (10 + Range("G10"))
ActiveWindow.SelectedSheets.PrintOut Copies:=2
End Sub