当前位置: 代码迷 >> VBA >> EXCEL 问Is操作符与Not的施行先后顺序
  详细解决方案

EXCEL 问Is操作符与Not的施行先后顺序

热度:8630   发布时间:2013-02-26 00:00:00.0
EXCEL 问Is操作符与Not的执行先后顺序
看了一段以下代码:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim MRange As Range
    Set MRange = Range(“InputRange”)
    If Not Intersect(Target, MRange) Is Nothing Then _
       MsgBox “A changed cell is in the input range.”
End Sub

不明白其中 is nothing 与 not 的执行先后顺序如何判断?就此代码的理解,纯粹个人估计是先执行"Intersect(Target, MRange) Is Nothing"这段,再到 Not,但具体的依据实在找不到,请给出资料指引。
------解决方案--------------------------------------------------------
在office2007的VBA开发界面搜索“运算符优先顺序”

运算符优先顺序
请参阅     示例     特性 

在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解,称这个顺序为运算符的优先顺序。

在表达式中,当运算符不止一种时,要先处理算术运算符,接着处理比较运算符,然后再处理逻辑运算符。所有比较运算符的优先顺序都相同;也就是说,要按它们出现的顺序从左到右进行处理。而算术运算符和逻辑运算符则必须按下列优先顺序进行处理:

算术 比较 逻辑 
指数运算 (^) 相等 (=) Not 
负数 (–) 不等 (<>) And 
乘法和除法 (*、 /) 小于 (<) Or 
整数除法 (\) 大于 (>) Xor 
求模运算 (Mod) 小于或相等 (<=) Eqv 
加法和减法 (+、 –) 大于或相等 (>=) Imp 
字符串连接 (&) Like
Is   



当乘法和除法同时出现在表达式中时,每个运算都按照它们从左到右出现的顺序进行计算。当乘法和除法同时出现在表达式中时,每个运算也都按照它们从左到右出现的顺序进行计算。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。但是,在括号之内,运算符的优先顺序不变。

字符串连接运算符 (&) 不是算术运算符,但是,就其优先顺序而言,它在所有算术运算符之后,而在所有比较运算符之前。

Like 的优先顺序与所有比较运算符都相同,实际上是模式匹配运算符。

Is 运算符是对象引用的比较运算符。它并不将对象或对象的值进行比较,而只确定两个对象引用是否参照了相同的对象。
  相关解决方案