如何在打印页面之前设置打印macros以运行其他两个macros
我是使用macros的新手,但遇到了让我难以接受的情况。 我有一个包含3个工作表(“检查报告”,“设备列表”和“缺陷”)的工作簿。 我在“设备列表”和“隐藏空白行”的“缺陷”上有一个macros。 我想在“检查报告”上创build一个macros来操作macros,在打印所有3页之前隐藏空行。
这是我的代码。 前两个Sub分别在各自的工作表上,最后一个在一个模块中。
Sub Hide_Blank_Rows2() 'Hide blank rows on "Device List" ActiveSheet.Unprotect Password:="" Application.ScreenUpdating = 0 On Error Resume Next [b12:b1108].SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True Application.ScreenUpdating = 1 ActiveSheet.Protect Password:="" End Sub
Sub Hide_Blank_Rows3() 'Hide blank rows on "Deficiencies" ActiveSheet.Unprotect Password:="" Application.ScreenUpdating = 0 On Error Resume Next [b49:b156].SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True Application.ScreenUpdating = 1 ActiveSheet.Protect Password:="" End Sub
Sub Print_All_Pages() ' ' Run Macros to hide blank rows then print all three worksheets ' Call Hide_Blank_Rows2 Call Hide_Blank_Rows3 ' Sheets(Array("Inspection Report", "Device List", "Deficiencies")).Select Sheets("Inspection Report").Activate ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False End Sub
当我运行这个时,我得到一个编译错误:子或函数没有定义。
由于您的“隐藏”子是在工作表而不是在一个模块,他们是他们各自的工作表的方法。 你需要指定在ie上调用该方法的对象(使用Sheet2和Sheet3作为示例):
Sheet2.Hide_Blank_Rows2 Sheet3.Hide_Blank_Rows3
您可以省略Call
关键字。
您也可以将“隐藏”子模块移动到模块中。 如果将它们留在工作表上,将ActiveSheet
的引用replace为Me
将解决您尚未得到的错误(在调用2个Subs
或它们之间不要更改ActiveSheet):
Sub Hide_Blank_Rows2() 'Hide blank rows on "Device List" Me.Unprotect Password:="" Application.ScreenUpdating = 0 On Error Resume Next [b12:b1108].SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True Application.ScreenUpdating = 1 Me.Protect Password:="" End Sub
如果你把它们移动到一个模块中,你需要特别指定一个工作表来操作,以便解决你还没有做到的错误。 我个人只是把它们合并成一个Sub
这样的东西…
Sub Hide_Blank_Rows(sh As Worksheet, targetRange As String) sh.Unprotect Password:="" Application.ScreenUpdating = 0 On Error Resume Next sh.Range(targetRange).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True Application.ScreenUpdating = 1 sh.Protect Password:="" End Sub
…并将其放在Sub Print_All_Pages()
的相同位置。
你会这样称呼它:
Hide_Blank_Rows Sheets("Device List"), "B12:B1108" Hide_Blank_Rows Sheets("Deficiencies"), "B49:B156"