2015-10-07 29 views
0

如果我的工作表2上的T5单元格为空,我试图防止打印功能。我的代码:如果特定单元格为空,则禁止打印特定工作表

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    If IsEmpty(Range("T5")) Then 
    Cancel = True 
    MsgBox ("Insert Employee Number in REPAIR WORKSCOPE tab") 
    End If 
End Sub 

我曾尝试IsEmpty命令之前做ActiveSheet.Name =“表2”,但是当我尝试运行我只得到错误。

+0

你有什么错误? – Bmo

+0

运行时错误“9”下标超出范围 – Sundevil

回答

0

您可以使用And来检查两个条件。

If IsEmpty(Range("T5")) And ActiveSheet.Name = "Sheet 2" Then 
0

Range总是解析为ActiveSheet,除非另有明确合格。

试试这个:

If IsEmpty(Sheets("Sheet2").Range("T5")) 

注:

ActiveSheet.Name = “表2”

这很可能会引发错误,因为这不是你“如何激活“一个工作表,如果另一个表是”活动“Sheet2已经存在,那么你将得到一个密钥错误。你可以这样做:

Sheets("Sheet2").Activate 

然后你的原代码将工作。

我更倾向于将使用的明确资格范围内所需的工作表中的其他方法,避免了需要激活什么:)

如果你想防止印刷为第2页,然后,这样做:

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    If ActiveSheet.Name = "Sheet2" And IsEmpty(Sheets("Sheet2").Range("T5").Value) Then 
     Cancel = True 
     MsgBox ("Insert Employee Number in REPAIR WORKSCOPE tab") 
    End If 
End Sub 

如果你想防止所有印刷,Sheet2中的T5值只是基于:

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    If IsEmpty(Sheets("Sheet2").Range("T5").Value) Then 
     Cancel = True 
     MsgBox ("Insert Employee Number in REPAIR WORKSCOPE tab") 
    End If 
End Sub 
+0

我尝试了第二个代码,但由于某种原因,我尝试使用ActiveSheet.Name =“Sheet2”命令时,它突出显示了代码黄色并给出错误。 – Sundevil

+0

什么是错误? –

+0

我想通了,搜索了错误代码,我只需要使用表单代码名称和代码即可运行。感谢大家的帮助 – Sundevil

相关问题