Excel IF/IF Else带或状态跳过

Excel IF/IF Else带或状态跳过,excel,vba,Excel,Vba,所以我写了一个and语句,它也检查一个值是x还是y。但是,只有当它的第一个x语句为true,而在my or语句中y语句为true时,它才会执行代码 因此,基本上,当我在单元格17中的value=“Recovery Demand Issued”跳过第二个else if语句时,但是当单元格17中的value=“in Recovery”时,它就可以了 不确定为什么它会跳过第二个else if语句,我是否被和/或语句构造错误 If dataSheet.Cells(x, 6) = "Serena Hayw

所以我写了一个and语句,它也检查一个值是x还是y。但是,只有当它的第一个x语句为true,而在my or语句中y语句为true时,它才会执行代码

因此,基本上,当我在单元格17中的value=“Recovery Demand Issued”跳过第二个else if语句时,但是当单元格17中的value=“in Recovery”时,它就可以了

不确定为什么它会跳过第二个else if语句,我是否被和/或语句构造错误

If dataSheet.Cells(x, 6) = "Serena Hayward" And dataSheet.Cells(x, 8) = "Open" And dataSheet.Cells(x, 17) = "In Recovery" Or dataSheet.Cells(x, 17) = "Recovery Demand Issued" Then serenaBool = True


If chantalBool = True And cellDateDbl <= julyFinishDbl And cellDateDbl >= julyStartDbl Then
chantalJulyTotalDemanded = dataSheet.Cells(x, 10) + chantalJulyTotalDemanded

ElseIf serenaBool = True And cellDateDbl <= julyFinishDbl And cellDateDbl >= julyStartDbl Then
serenaJulyTotalDemanded = dataSheet.Cells(x, 10) + serenaJulyTotalDemanded
如果dataSheet.Cells(x,6)=“Serena Hayward”和dataSheet.Cells(x,8)=“打开”,dataSheet.Cells(x,17)=“正在恢复”或dataSheet.Cells(x,17)=“已发出恢复需求”,则serenaBool=True
如果chantalBool=True且cellDateDbl=julyStartDbl,则
ChantalJulyTotalRequired=数据表。单元格(x,10)+ChantalJulyTotalRequired
ElseIf serenaBool=True,cellDateDbl=julyStartDbl则
SerenajulyTotalRequired=数据表。单元格(x,10)+SerenajulyTotalRequired

我个人会像下面这样做,因为您的代码很难调试,请注意if语句中“or”参数周围的()

        Sub test()
        Dim serenabool As Boolean
            serenabool = False
        Dim chantelbool As Boolean
            chantelbool = False

        If datasheet.Cells(x, 6) = "Serena Hayward" And datasheet.Cells(x, 8) = "Open" And (datasheet.Cells(x, 17) = "In Recovery" Or datasheet.Cells(x, 17) = "Recovery Demand Issued") Then serenabool = True
        If datasheet.Cells(x, 6) = "Chantel Surname" And datasheet.Cells(x, 8) = "Open" And (datasheet.Cells(x, 17) = "In Recovery" Or datasheet.Cells(x, 17) = "Recovery Demand Issued") Then chantelbool = True

        If chantalBool = True And cellDateDbl <= julyFinishDbl And cellDateDbl >= julyStartDbl Then
        chantalJulyTotalDemanded = datasheet.Cells(x, 10) + chantalJulyTotalDemanded
        End If

        If serenabool = True And cellDateDbl <= julyFinishDbl And cellDateDbl >= julyStartDbl Then
        serenaJulyTotalDemanded = datasheet.Cells(x, 10) + serenaJulyTotalDemanded
        End If

        Debug.Print "Serena is " & serenabool
        Debug.Print "Chantel is " & chantelbool

        End Sub
子测试()
Dim serenabool作为布尔值
serenabool=假
Dim chantelbool作为布尔值
chantelbool=False
如果datasheet.Cells(x,6)=“Serena Hayward”和datasheet.Cells(x,8)=“打开”和(datasheet.Cells(x,17)=“正在恢复”或datasheet.Cells(x,17)=“已发出恢复需求”),则serenabool=True
如果datasheet.Cells(x,6)=“Chantel姓氏”和datasheet.Cells(x,8)=“打开”和(datasheet.Cells(x,17)=“正在恢复”或datasheet.Cells(x,17)=“已发出恢复需求”),则chantelbool=True
如果chantalBool=True且cellDateDbl=julyStartDbl,则
ChantalJulyTotalRequired=数据表。单元格(x,10)+ChantalJulyTotalRequired
如果结束
如果serenabool=True且cellDateDbl=julyStartDbl,则
SerenajulyTotalRequired=数据表。单元格(x,10)+SerenajulyTotalRequired
如果结束
调试。打印“Serena is”&serenabool
调试。打印“Chantel is”和chantelbool
端接头