2017-05-13 7 views
1

ブックを閉じる前に特定のセルに情報を入力する必要があるコントロールを作成しようとしています。ユーザーが閉じようとしたときにセルが空の場合は、ワークブックに留まり、情報を入力するか保存せずに終了するかのいずれかを促すメッセージが表示されます。セルにデータが入力されると、ブックは自動的に保存されます。Workbook_BeforeClose MsgBoxバグ

以下は、これまでのところ、ThisWorkbookオブジェクトに配置されていたものです。私が抱えている問題は、MsgBoxが表示され、オプションが選択された後、もう一度表示されることです。なぜこのことが起こっているのか分からないので、ここにいる誰かが私が逃していることを指摘できればうれしいです。

注:現在アクティブなブックは、アプリケーション全体を終了するのではなく、閉じることができます。だから、ユーザーが他のExcelウィンドウを開いている場合、私はそれらも閉鎖したくない。

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    If Range(“A1”).Value = “” Then 
     OutPut = Msgbox (“A1 is empty. Exit without saving?”, vbOKCancel + vbDefaultButton2) 
     If OutPut = 1 Then 
      ThisWorkbook.Close False 
     Else: Cancel = True 
      Exit Sub 
     End If 
    End If 
ActiveWorkbook.Save 
End Sub 

答えて

1

さて、あなたは、2つ目のイベントが由来する場所それはだ、ThisWorkbook.Close Falseを使用して再度ブックを閉じるために試してください

代わりに、ポップアップ表示し、確認ダイアログを防ぐためにThisWorkbook.Saved = Trueを使用します。それ

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Dim OutPut As VbMsgBoxResult 

    If Range("A1").Value = "" Then 
     OutPut = MsgBox("A1 is empty. Exit without saving?", vbOKCancel + vbDefaultButton2) 
     If OutPut = vbOK Then 
      ThisWorkbook.Saved = True 
     Else 
      Cancel = True 
     End If 
    Else 
     ThisWorkbook.Save 
    End If 
End Sub 
+0

だったこと!おかげで、それは何か簡単だと分かった! –