2012-07-21 38 views
76

问题是!=在excel vba中不起作用。Excel VBA中的“!=”是什么?

我希望能够使用的

If strTest != "" Then代替If strTest = "" Then

是否有另一种方式来做到这一点,除了!=

My功能模仿!=

Sub test() 

Dim intTest As Integer 
Dim strTest As String 

intTest = 5 

strTest = CStr(intTest) ' convert 

Range("A" + strTest) = "5" 



    For i = 1 To 10 
     Cells(i, 1) = i 

     If strTest = "" Then 
      Cells(i, 1) = i 
     End If 

    Next i 


End Sub 
+1

你确定它是'!='而不是'<>'? – dasblinkenlight 2012-07-21 20:56:17

+0

你的问题是什么?为什么'!='在vba中不起作用,或vba中的不等式运算符是什么? – GSerg 2012-07-21 20:56:36

+1

http://duckduckgo.com/?q=VBA+comparison+operators – 2012-11-16 08:07:37

回答

131

因为在VBA不等式操作者是<>

If strTest <> "" Then 
    ..... 

操作!=在C#,C++使用。

24

在VBA中,!=运算符是Not运营商,像这样:

If Not strTest = "" Then ... 
+1

这是不正确的。 'Not'是逻辑反转运算符,它对应于C语言中的'!'。 – 2017-01-19 21:55:46

6

只是一个说明。如果你想为一个字符串比较"",你的情况,使用

If LEN(str) > 0 Then 

甚至只是

If LEN(str) Then 

代替。

+6

我知道对于VBA来说有点新鲜的人,这个答案看起来很奇怪,但是这个,不管你相信与否,FAR都比检查'<>“''更有效率' – LimaNightHawk 2015-01-29 16:52:54

+5

有趣的事实回答这个答案:Visual Basic和Pascal语言将字符串的长度存储在开头,然后存储内容。另一方面,基于C语言和Java语言不存储长度并且使用'\ 0'(空)终止符来表示字符串结束。因此,在VBA中获取长度很快 - 它只是从内存读取一个整数 - 并且在Java中很慢 - 您需要遍历字符串。 – 2016-02-08 19:40:34

+0

@LimaNightHawk *远*效率更高?你能详细说明一下吗?我想大多数现代编译器会捕获模式'<>“”'并生成与'Len(str)'相同的p代码。 – Roland 2017-10-04 15:28:47

相关问题