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
4

1 回答 1

1

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

Range("B1:M37").Select 

你可以做几件事:

  • 不要使用选择。目前尚不清楚这里是否需要它,除非绝对必要,否则它是 VBA 最糟糕的做法之一。
  • 在您的 Worksheet_SelectionChange 事件中,如果您只希望它在 D2 并且仅选择 D2 时运行,您可以添加另一个条件:

    If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("D2")) Is Nothing Then frmCalendar.Show

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

于 2013-03-04T18:33:40.707 回答