2017-01-12 2 views
0

以下の値を使用して、値B14 & E21を超えないことを確認しようとしています。これらの範囲のいずれかの値を超えた場合は、エラーをユーザーに知らせるメッセージボックスが表示されます。エラーチェック後にVBAコードが機能しない

私はエラーコードをチェックしてエラーを強調表示していませんが、実行するには何も起こっていません。

Option Explicit 

Sub TooManyHolidays() 

Dim msg As String 
Dim Ans As VbMsgBoxResult 

If Sheets("Request Form").Range("B14") < 26 And Sheets("Request Form").Range("E21") < 10 Then 
    NewBookingCheck.NewBookingCheck 
ElseIf Sheets("Request Form").Range("B14") >= 26 Then 
    msg = (" You Dont Have Enough Holiday ") 
    Ans = MsgBox(msg, vbYesNo) 
    If Ans = vbNo Then 
     Sheets("Request Form").Select 
     Range("Employee3").ClearContents 
     Range("DateRequest").ClearContents 
     Application.DisplayAlerts = False 
     ThisWorkbook.Save 
     Application.DisplayAlerts = True 
     Application.Quit 
    End If 
    If Ans = vbYes Then 
     Sheets("Request Form").Select 
     Range("Employee3").ClearContents 
     Range("DateRequest").ClearContents 
     Range("Employee3") = Application.Username 
    ElseIf Sheets("Request Form").Range("E21") >= 10 Then 
     msg = (" You Cant Book More Than 10 Or More Days In One Request ") 
     Ans = MsgBox(msg, vbYesNo) 
     If Ans = vbNo Then 
      Sheets("Request Form").Select 
      Range("Employee3").ClearContents 
      Range("DateRequest").ClearContents 
      Application.DisplayAlerts = False 
      ThisWorkbook.Save 
      Application.DisplayAlerts = True 
      Application.Quit 
     End If 
     If Ans = vbYes Then 
      Sheets("Request Form").Select 
      Range("Employee3").ClearContents 
      Range("DateRequest").ClearContents 
      Range("Employee3") = Application.Username 
     End If 
    End If 

End If 

End Sub 
+1

「NewBookingCheck.NewBookingCheck」とは何ですか? –

+0

デバッグヘルプ(「なぜこのコードは動作しませんか?」)には、特定の問題やエラー、それを再現するのに必要な*最短のコードを質問に含める必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。 –

+0

'Range(" B14 ")'と 'Range(" E21 ")'に何の値を入力しましたか? –

答えて

0

私は以下のコードは、あなたが望んであなたを与えるだろうと思います(私はNewBookingCheck.NewBookingCheckが何であるかを知らないにもかかわらず)、またはあなたは何をしている両方の範囲(「B14」)とレンジ(「E21」の場合)は許容値の範囲内にあります。

Option Explicit 

Sub TooManyHolidays() 

Dim msg As String 
Dim Ans As VbMsgBoxResult 

With Sheets("Request Form") 

    If .Range("B14") < 26 And .Range("E21") < 10 Then 
     NewBookingCheck.NewBookingCheck '<-- don't know what this does ? 
    ElseIf .Range("B14") >= 26 Then 
     msg = (" You Dont Have Enough Holiday ") 
     Ans = MsgBox(msg, vbYesNo) 
     If Ans = vbNo Then 
      Range("Employee3").ClearContents 
      Range("DateRequest").ClearContents 
      Application.DisplayAlerts = False 
      ThisWorkbook.Save 
      Application.DisplayAlerts = True 
      Application.Quit 
     End If 
     If Ans = vbYes Then 
      Range("Employee3").ClearContents 
      Range("DateRequest").ClearContents 
      Range("Employee3") = Application.UserName 
     End If    
    ElseIf .Range("E21") >= 10 Then '<-- this should be directly below "If .Range("B14") < 26 And .Range("E21") < 10 Then" 
     msg = (" You Cant Book More Than 10 Or More Days In One Request ") 
     Ans = MsgBox(msg, vbYesNo) 
     If Ans = vbNo Then 
      Range("Employee3").ClearContents 
      Range("DateRequest").ClearContents 
      Application.DisplayAlerts = False 
      ThisWorkbook.Save 
      Application.DisplayAlerts = True 
      Application.Quit 
     End If 
     If Ans = vbYes Then 
      Range("Employee3").ClearContents 
      Range("DateRequest").ClearContents 
      Range("Employee3") = Application.UserName 
     End If 
    End If 

End With 

End Sub 
関連する問題