设置打印区域时防止激活用户表单

时间:2013-03-04 17:36:48

标签: excel-vba vba excel

这可能是一个非常简单的答案。 我在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 个答案:

答案 0 :(得分:1)

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

Range("B1:M37").Select 

你可以做几件事:

  • 请勿使用Select。目前还不清楚它是否需要,而且它是一个 除非绝对必要,否则将排除VBA最佳做法。
  • 在Worksheet_SelectionChange事件中,如果您只想运行它 如果选择D2且仅选择D2,则可以添加另一个条件:

    如果Target.Cells.Count> 1然后退出Sub 如果不相交(目标,范围(“D2”))什么都没有那么frmCalendar.Show

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