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 の悪い慣例の 1 つです。
  • Worksheet_SelectionChange イベントで、D2 と D2 のみが選択されている場合にのみ実行する場合は、別の条件を追加できます。

    If Target.Cells.Count > 1 Then Sub を終了します If Not Intersect(Target, Range("D2")) Is Nothing Then frmCalendar.Show

ただし、ここでも Select ステートメントを削除します。

于 2013-03-04T18:33:40.707 に答える