繁体   English   中英

如何在 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
  • 按位运算符,采用两个 integer 操作数并返回一个由两个操作数中存在的1位组成的值。 例如, 14 And 7 = 二进制1110 And 0111 = 二进制0110 = 6。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM