2017-11-13 12 views
1

私はVBAを初めて使いました。いくつかのセルを必須にし、ワークブックを開いたときに空白になっていればセルを強調表示します。しかし、私は自分が持っているコードでExcelを閉じることができません。なぜ誰に教えてもらえますか?サブの終わりにVBA - 閉じることができません

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
     If Cells(2, 6).Value = "" Then 
      MsgBox "Cell F2 requires user input", vbInformation, "Please filled up the mandatory cells" 
     ElseIf Cells(2, 9).Value = "" Then 
      MsgBox "Cell I2 requires user input", vbInformation, "Please filled up the mandatory cells" 
     ElseIf Cells(4, 4).Value = "" Then 
      MsgBox "Cell D4 requires user input", vbInformation, "Please filled up the mandatory cells" 
     End If 
     Cancel = True 
End Sub 

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
     If Cells(2, 6).Value = "" Then 
      MsgBox "Cell F2 requires user input", vbInformation, "Please filled up the mandatory cells" 
     ElseIf Cells(2, 9).Value = "" Then 
      MsgBox "Cell I2 requires user input", vbInformation, "Please filled up the mandatory cells" 
     ElseIf Cells(4, 4).Value = "" Then 
      MsgBox "Cell D4 requires user input", vbInformation, "Please filled up the mandatory cells" 
     End If 
     Cancel = True 
End Sub 

    Private Sub Workbook_Open() 
    If Cells(2, 6).Value = "" Then 
      Range("F2").Interior.ColorIndex = 6 
    ElseIf Cells(2, 9).Value = "" Then 
      Range("I2").Interior.ColorIndex = 6 
    ElseIf Cells(4, 4).Value = "" Then 
      Range("D4").Interior.ColorIndex = 6 
    End If 
End Sub 
+0

を試してみてください、あなたはmessageboxsが完了するのかを尋ねた細胞を完了しましたか? – QHarr

+0

はい。必須の細胞は正常に機能します。空の場合、警告メッセージが表示されます。必要な細胞を満たした後にブックを閉じることができません。 – aaa

+2

'Workbook_BeforeClose' ...' Cancel = True'は常に、閉じプロセスをキャンセルして、ワークブックを開いたままにします。 '' Cancelbox = True'と 'msgbox ...'行の後に 'exit sub'を入れます。 ...既存のものを 'Cancel = false'に変更してください.....' beforesave'のために同じことをしてください – jsotola

答えて

4

cancel = trueは、終了処理をキャンセルするので、ワークブックを開いたままに

この

Option Explicit 

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Dim aaa As Variant 
    For Each aaa In Array("F2", "I2", "D4") 
     If Range(aaa).Value = "" Then 
      MsgBox "Cell " & aaa & " requires user input", vbInformation, "Please filled up the mandatory cells" 
      Cancel = True 
      Exit Sub 
     End If 
    Next aaa 
    Cancel = False 
End Sub 

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    Dim aaa As Variant 
    For Each aaa In Array("F2", "I2", "D4") 
     If Range(aaa).Value = "" Then 
      MsgBox "Cell " & aaa & " requires user input", vbInformation, "Please filled up the mandatory cells" 
      Cancel = True 
      Exit Sub 
     End If 
    Next aaa 
    Cancel = False 
End Sub 

Private Sub Workbook_Open() 
    Dim aaa As Variant 
    For Each aaa In Array("F2", "I2", "D4") 
     If Range(aaa).Value = "" Then Range(aaa).Interior.ColorIndex = 6 
    Next aaa 
End Sub 
関連する問題