Excel 设置打印区域时防止激活用户窗体

Excel 设置打印区域时防止激活用户窗体,excel,vba,Excel,Vba,对此可能有一个非常简单的答案。 我在Excel电子表格上设计了一个捕获表,并使用了单元格D2的日期选择器。到目前为止,一切顺利。当我关闭电子表格时,我有一个小的宏,用于设置打印区域B1:M37以准备打印。此时,宏将激活日期选择器,在我继续打印之前,必须手动关闭该选择器。如何抑制事件发生,或使用代码关闭用户窗体。我的代码如下: Sub Test_a_Print_again() Range("B1:M37").Select ActiveSheet.PageSetup.PrintAr

对此可能有一个非常简单的答案。 我在Excel电子表格上设计了一个捕获表,并使用了单元格D2的日期选择器。到目前为止,一切顺利。当我关闭电子表格时,我有一个小的宏,用于设置打印区域B1:M37以准备打印。此时,宏将激活日期选择器,在我继续打印之前,必须手动关闭该选择器。如何抑制事件发生,或使用代码关闭用户窗体。我的代码如下:

Sub Test_a_Print_again()
    Range("B1:M37").Select 
    ActiveSheet.PageSetup.PrintArea = "$B$1:$M$37"
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    Range("B1").Select
End Sub  

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("D2")) Is Nothing Then frmCalendar.Show        '
End Sub

您的SelectionChange事件由以下行触发:

Range("B1:M37").Select 
你可以做几件事:

  • 不要使用选择。现在还不清楚这里是否需要它,这是一个 除非绝对必要,否则请列出VBA最常见的错误做法
  • 在您的工作表\u SelectionChange事件中,如果您只希望它运行 如果选择了D2且仅选择了D2,则可以添加另一个条件:

    如果Target.Cells.Count>1,则退出Sub 如果不相交(目标,范围(“D2”)为空,则frmCalendar.Show


但是,我还是要去掉Select语句。

您的SelectionChange事件是由以下行触发的:

Range("B1:M37").Select 
你可以做几件事:

  • 不要使用选择。现在还不清楚这里是否需要它,这是一个 除非绝对必要,否则请列出VBA最常见的错误做法
  • 在您的工作表\u SelectionChange事件中,如果您只希望它运行 如果选择了D2且仅选择了D2,则可以添加另一个条件:

    如果Target.Cells.Count>1,则退出Sub 如果不相交(目标,范围(“D2”)为空,则frmCalendar.Show

但是,我还是要去掉Select语句