看了一段以下代码:
- VB code
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 运算符是对象引用的比较运算符。它并不将对象或对象的值进行比较,而只确定两个对象引用是否参照了相同的对象。