《VBA之Excel应用》(版权10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是VBA之Excel应用第六章第二节逻辑运算符And、Or、Not

【分享成果,随喜正能量】佛说,你恨的人,来生不会再见,所以别在他身上浪费时间;你爱的人,来生也不会再见,所以今生要好好对他。佛陀所揭示的因果,不是用来吓唬人的,而是用来提醒人的。这个真理,不管你是否相信,它都在那里,不增不减。
第六章第二节逻辑运算符And、Or、Not
我们这讲讲解逻辑运算。Excel VBA中最常用的三个逻辑运算符是:And, Or和Not。我们将在这讲来给大家详细地讲解。
1逻辑运算符And
对两个Boolean型表达式执行运算,或对两个数值表达式执行位运算。
语法:result = expression1 And expression2
参数:
① Result 必需。任何 Boolean 或数值表达式。对于布尔值比较,result 是两个值的逻辑与 Boolean。对于按位运算,result是表示两个数值按位 "与" 计算的数值。
② expression1 必需。 任何 Boolean 或数值表达式。
③ expression2 必需。 任何 Boolean 或数值表达式。
1)对于布尔值比较:
expression1expression2result
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse
2)如果是按位比较:
expression1expression2result
111
100
010
000
2逻辑运算符Or
对两个Boolean型表达式执行运算,或对两个数值表达式执行位运算。
语法:result = expression1 And expression2
参数:
① result必需。 任何Boolean或数值表达式。对于布尔值比较,result 是两个值的逻辑或Boolean。对于按位运算,result是表示两个数值按位“或”计算的数值。
② expression1必需。 任何 Boolean 或数值表达式。
③ expression2必需。 任何 Boolean 或数值表达式。
1)对于布尔值比较:
expression1expression2result
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse
2)对于按位运算, Or 运算符对两个数值表达式中的相同位置执行按位比较,
expression1 expression2result
111
101
011
000
3Not 运算符
对表达式执行逻辑非运算,或对数值表达式执行位求反运算。
语法:result = Not expression
参数:
① result 必需。 任何 Boolean或数值表达式。
② expression 必需。 任何 Boolean或数值表达式。
1)对于布尔值比较:
expressionresult
TrueFalse
FalseTrue
2)对于按位运算,Not运算符反转任何数值表达式的位值
expressionresult
10
01
4逻辑运算的实例讲解
我们看一下下面的代码:
Sub mynzB() '逻辑运算
Dimmyscore1 As Integer, myscore2 As Integer, myresult As String
Range("C1").Value= ""
Range("D1").Value= ""
myscore1= Range("A1").Value
myscore2= Range("A2").Value
Ifmyscore1 >= 60 And Not myscore2 = 1 Then
myresult= "通过"
Else
myresult= "失败"
EndIf
Range("A3").Value= myresult
Ifmyscore1 >= 60 Or myscore2 > 1 Then
myresult= "通过"
Else
myresult= "失败"
EndIf
Range("B3").Value= myresult
End Sub
代码截图:

代码讲解:
①Range("C1").Value = ""
Range("D1").Value= ""
myscore1= Range("A1").Value
myscore2= Range("A2").Value
以上代码是清空C1,D1单元格,然后将A1,A2单元格的值放入变量myscore1,myscore2中。
②If myscore1 >= 60 And Not myscore2 = 1 Then
myresult= "通过"
Else
myresult= "失败"
EndIf
Range("A3").Value = myresult
上述代码是第一种判断标准。判断的通过条件是myscore1 >= 60 And Not myscore2 = 1
③ if myscore1 >= 60 Or myscore2 > 1 Then
myresult= "通过"
Else
myresult= "失败"
EndIf
Range("B3").Value = myresult
这是第二种判断方法,通过的条件是:myscore1 >= 60 Or myscore2 > 1
下面我们看代码的运行:
在工作表的A1和A2单元格中录入,70和1,点击运行:

我们分析一下代码的运行过程:
第一种判断方法:
条件:myscore1 >= 60 And Not myscore2 = 1,
这个判断条件代入数值后是70>=60 and And Not 1=1
那么就是 True AND False
根据AND的运算规则:结果是FALSE
所以将执行myresult = "失败"。
第二种判断方法:
条件:myscore1 >= 60 Or myscore2 > 1,
这个判断条件代入数值后是70>=60 or 1>1
那么就是 True or False,
根据or的运算规则:结果是True ,
所以将执行myresult = "通过"。
今日内容回向:
1)逻辑判断AND NOT OR的意义是什么?
2)逻辑判断AND NOT OR的运算规则是什么?
我20多年的VBA成果全在下面的资料中:




