VBA如果那么声明不起作用

时间:2017-01-06 10:22:08

标签: vba excel-vba excel

我只是想知道是否有人可以提供帮助。

我写了以下内容
  1. 首先查看用户是否有足够的假期来请求假期
  2. 在这种情况下,要查看他们将要离开的假期是否要求他们超过分配的时间。
  3. 如果这两个都很好,它应该运行Sub NewBookingCheck
  4. 但是,如果他们没有足够的时间会出现,但是如果它没有足够的话就不会通过运行“NewBookingCheck”。

    是的,有人可以帮我吗?

    我还要说这是我第一次完全编写自己的代码,所以我对可能出现的任何错误进行了表示

    <div class="a"><h1>&#9785;123-456-789text 2017</h1>
    

3 个答案:

答案 0 :(得分:1)

你错过了一个结局,如果。因此,Else语句属于

If Ans = vbYes Then

if clause。

将代码的最后一部分更改为以下内容:

If daystaken >= 25 Then
Msg = " You Do Not Have Enough Holiday! Would You Like To Continue ? " & Application.UserName

Ans = MsgBox(Msg, vbYesNo)
If Ans = vbNo Then
            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
Else

NewBookingCheck.NewBookingCheck

End If

End Sub

答案 1 :(得分:0)

请尝试以下方法: -

Sub TooMuchHoliday()
Dim result          As String
Dim myValue         As Variant
Dim StrMsg          As String

'If you have <= instead of just < it will not let them take there last day, they should be able to use down to 0 not 1
If Range("D14").Value < 0 Then
    If MsgBox("You do not have enough annual leave remaining to fufil this request, would you still like to continue?", vbYesNo, "Not Enough") = vbNo Then
        Application.DisplayAlerts = False
        ThisWorkbook.Save
        Application.DisplayAlerts = True
        Application.Quit
    End If
End If

Sheets("Request Form").Select
Range("Employee3").ClearContents
Range("DateRequest").ClearContents
Range("Employee3") = Application.UserName

NewBookingCheck.NewBookingCheck

End Sub

您检查用户使用的费用是否超过其余额(剩余)并且使用的次数不超过允许的次数(已拍摄)。这意味着有人可能会被给予超过25天的年假而不被允许接受,所以他们为什么要给它呢?要检查的关键是剩下的,如果低于0则会出现问题。

你还有<= 1这意味着他们无法在那里休假两天(0是一天,1是一天)

如果应用程序退出,则无论如何都不会运行其余代码,因此,如果需要触发警报并且用户不想继续,那么它将关闭,否则它将启动下一段代码。< / p>

答案 2 :(得分:-2)

我将来建议你在这里重新编写和重新编辑你的问题,因为相应地接近了严肃的答案,你希望你的代码得到很好的组织并具有良好的代码外观。 至于你的问题:你没有附加NewBookingCheck函数,所以我猜它是某种类型的:Private Sub NewBookingCheck(){...} 尝试用以下代码替换NewBookingCheck.NewBookingCheck行:

Call NewBookingCheck()