首页 > 解决方案 > “Select Case True” - 如何包含 3 个以上的“Case”语句?

问题描述

有人可以帮我写代码吗?我已经介绍了超过 3 个“案例”语句(即 6 个),并且似乎最后 2 个“案例”没有被选中(在下面的代码中标记)。谢谢

Sub yyy()

Dim TW As Workbook: Dim ac As Worksheet
Set TW = ThisWorkbook: Set ac = TW.Sheets(1)

Select Case True

Case ac.Range("G8") = "No" And ac.Range("G9") = "" And ac.Range("G10") = "" And ac.Range("G12") = "" And ac.Range("G11") = ""
ac.Range("F14") = "Continue with Test."

Case ac.Range("G8") = "Yes" And ac.Range("G9") = "" And ac.Range("G10") = "" And ac.Range("G12") = "" And ac.Range("G11") = ""
ac.Range("F14") = "No further action required."

'Yes, Yes, No, Yes
Case ac.Range("G8") <> "" And ac.Range("G9") = "Yes" And ac.Range("G10") = "Yes" And ac.Range("G12") = "Yes" And ac.Range("G11") = "No"
ac.Range("F14") = "No further action required."

'No,No,Yes,No
Case ac.Range("G8") = "No" And ac.Range("G9") = "No" And ac.Range("G10") = "No" And ac.Range("G12") = "No" And ac.Range("G11") = "Yes"
ac.Range("F14") = "Full Test."

'The following is not being picked up? I guess I have introduced too many "Case" statements?
'Cases for Yes No in Q4

Case ac.Range("G8") <> "No" And ac.Range("G9") <> "" And ac.Range("G10") <> "" And ac.Range("G12") <> "" And (ac.Range("G11") = "Yes" Or ac.Range("G11") = "No")
ac.Range("F14") = "Full Test."

Case ac.Range("G8") = "No" And ac.Range("G9") <> "" And ac.Range("G10") <> "" And ac.Range("G12") <> "" And ac.Range("G11") = "Yes"
ac.Range("F14") = "Full Test."

Case Else

End Select

End Sub

标签: excelvba

解决方案


这完全取决于触发器的逻辑和顺序。请尝试以下:

    Sub yyy()

    Dim TW As Workbook: Dim ac As Worksheet
    Set TW = ThisWorkbook: Set ac = TW.Sheets(1)

    Select Case True
    Case ac.Range("G8") = "No" And ac.Range("G9") = "No" And ac.Range("G10") = "No" And ac.Range("G12") = "No" And ac.Range("G11") = "Yes"
    ac.Range("F14") = "Full Test."
    Case Else
    End Select

    Select Case True
    Case ac.Range("G8") = "No" And ac.Range("G9") = "Yes" And ac.Range("G10") = "Yes" And ac.Range("G12") = "Yes" And ac.Range("G11") = "No"
    ac.Range("F14") = "No further action required."
    Case Else
    ac.Range("F14") = "Full Test."

    Select Case True
    Case ac.Range("G9") = "No" And ac.Range("G10") = "No" And ac.Range("G12") = "Yes" And ac.Range("G11") = "No"
    ac.Range("F14") = "No further action required."
    End Select

    Select Case True
    Case ac.Range("G11") = "Yes" Or ac.Range("G12") = "No"
    ac.Range("F14") = "Full CRA Test."
    End Select

    Select Case True
    Case ac.Range("G8") = "No" And (ac.Range("G9") = "Yes" Or ac.Range("G9") = "") And ac.Range("G10") = "" And ac.Range("G12") = "" And ac.Range("G11") = ""
    ac.Range("F14") = "Continue with Test."

    End Select
    End Select
    End Sub

推荐阅读