错误检查后VBA代码不起作用

时间:2017-01-12 16:03:03

标签: vba excel-vba excel

我正在尝试使用以下内容来检查范围B14和& E21。如果超出这些范围中的任何一个中的值,则应显示msgbox以告知用户该错误。

我有错误检查了代码并且没有突出显示任何错误,但是当我去运行它时没有发生任何事情。

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 个答案:

答案 0 :(得分:0)

我认为下面的代码会给你你想要的东西(即使我不知道什么是NewBookingCheck.NewBookingCheck),或者如果两个范围你都在做什么(&#34; B14&#34; )和范围(&#34; E21和#34;)在允许值范围内。

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