什么样的风格? '<>'或者'不=' / VBA

时间:2014-05-15 19:07:25

标签: vba excel-vba if-statement excel

我的印象是写作总是最好:

If Not X = Y then

然后

If X <> Y then

但是我不知道我做了什么我得到了这个想法: - )。

有最好的吗?为什么我们有两种方法可以做同样的事情呢?

TKS!

4 个答案:

答案 0 :(得分:7)

可读性是最重要的。

第二个对我来说似乎更自然。使用等号然后将Not添加到其中似乎具有误导性。

Not恕我直言最好与IsNumeric(...)等布尔函数一起使用,这样可以更自然地读取代码,例如,

If Not IsNumeric(myNumberString) Then

而且,我个人更喜欢使用Not= False进行布尔测试。例如,我喜欢......

If bFlag1 Then
If Not bFlag2 Then

...超过......

If bFlag1 = True Then ' <-- (This is totally redundant) = True
If bFlag2 = False Then
If a <> b = True Then ' <-- please don't ever do this

答案 1 :(得分:2)

第一个选择是避免混淆。有人可能会认为你打算写If (Not X) = Y Then

为什么我们有两种方式?因为......你怎么能阻止它呢?这是三个运算符=<>Not的自然结果。

答案 2 :(得分:2)

除了风格和可读性之外,还有一点不同:

Not是一个逻辑运算符,<>是一个关系运算符,逻辑和位运算符的优先级低于其他算术运算符和关系运算符(参见here)。

此外Not运算符可以重载,我认为这对于VBA 中的关系运算符是不可能的。

答案 3 :(得分:1)

我认为If X <> Y Then...更具表现力(但这是一个偏好问题)。此外,它在条件评估方面可能更有效,因为If Not X = Y Then...需要两个操作(评估相等性和否定结果)而不是一个。但是,通过幕后的一些代码优化,谁知道实际会发生什么?...

但是,有些情况下无法避免被否定的情况;例如,Is运算符没有否定形式(如Isn_t或其他内容),因此在这种情况下,您需要说If Not X Is Y Then...

相关问题