【发布时间】:2016-04-01 23:10:02
【问题描述】:
我是使用宏的新手,但我遇到了让我难过的情况。我有一个包含 3 个工作表(“检查报告”、“设备列表”和“缺陷”)的工作簿。我在“设备列表”和“缺陷”上有一个隐藏空白行的宏。我想在“检查报告”上创建一个宏,它将操作宏以在打印所有 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
当我运行它时,我得到一个编译错误:未定义子或函数。
【问题讨论】:
-
我无法复制。还有其他代码吗?当您从 VBE 菜单中选择 Debug->Compile 时,哪一行会突出显示?
-
Sub Print_All_Pages() 以黄色突出显示,Call Hide_Blank_Rows2 以蓝色突出显示。
-
完全错过了代码在 3 个地方之间传播。请参阅下面的答案。
-
为什么将宏放在工作表代码模块上而不是正确的代码模块上?我真的不明白这一点......