如何在 THEN 语句后执行多个 AND 语句

How to perform multiple AND statement after THEN Statement

Sub Crons()
    Dim s1 As Worksheet, s2 As Worksheet
    Dim check1 As Boolean, check5 As Boolean, check10 As Boolean, flow As Boolean, speed As Boolean, motor_power As Boolean
    
    Set s1 = ThisWorkbook.Worksheets(1)
    Set s2 = ThisWorkbook.Worksheets(2)
    
    check1 = s2.CHECKBOXES("Check Box 1").Value = xlOn
    check5 = s2.CHECKBOXES("Check Box 5").Value = xlOn
    check10 = s2.CHECKBOXES("Check Box 10").Value = xlOn
           
    flow = s1.Range("B26").Value = "Flow(from fill level)"
    speed = s1.Range("B24").Value = "Speed"
    motor_power = s1.Range("B25").Value = "Motor Power"
    
    If check1 Or _
        ((check10 Or check5) Or _
        (flow Or speed) Or _
        (motor_power)) Then
            s1.Range("B30").Value = "Activate anomaly detection" And _
            s1.Range("B31").Value = "Activate Operating hour" And _
            s1.Range("B32").Value = "Activate cycle time"
    Else
        s1.Range("B30").Value = vbNullString And _
        s1.Range("B31").Value = vbNullString And _
        s1.Range("B32").Value = vbNullString
    End If
    
End Sub

只是不要使用 AND

If check1 Or _
    ((check10 Or check5) Or _
    (flow Or speed) Or _
    (motor_power)) Then
        s1.Range("B30").Value = "Activate anomaly detection" 
        s1.Range("B31").Value = "Activate Operating hour"
        s1.Range("B32").Value = "Activate cycle time"
Else
    s1.Range("B30").Value = vbNullString 
    s1.Range("B31").Value = vbNullString 
    s1.Range("B32").Value = vbNullString
End If

您误解了 And 运算符。它有两个目的:

  • 一个逻辑运算符,类似于您在 If 语句中使用的 Or。而 True Or False 等于 TrueTrue And False 等于 False
  • 按位运算符,接受两个整数操作数并返回一个由两个操作数中存在的 1 位组成的值。例如,14 And 7 = 二进制 1110 And 0111 = 二进制 0110 = 6.

根据您的代码尝试将其用作程序语句(“执行 X,然后执行 Y”)不仅不正确而且毫无意义,因为这是两个顺序语句的普通行为。