2013-03-04 96 views
1

这可能是一个非常简单的答案。 我在Excel电子表格上设计了一个捕获表格,并且已经为单元格D2使用了DatePicker。到现在为止还挺好。当我关闭电子表格时,我有一个小宏设置打印区域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 

回答

1

你SelectionChange事件正在由线触发:

Range("B1:M37").Select 

有几件事情你可以做:

  • 不要使用选择。目前还不清楚这是否需要,除非绝对必要,这是VBA顶级恶习中的一个 。
  • 在你Worksheet_SelectionChange情况下,如果你只希望它运行 如果D2只有D2被选中,你可以添加另一个条件:

    如果Target.Cells.Count> 1然后退出小组 如果不能相交(Target,Range(“D2”))是Nothing然后frmCalendar.Show

但是,我只是摆脱了Select语句。