2012-07-21 12 views
76

El problema es que != no funciona como una función en excel vba.¿Cuál es el equivalente de "! =" En Excel VBA?

Quiero ser capaz de utilizar

If strTest != "" Then en lugar de If strTest = "" Then

¿Existe otro enfoque para hacer esto, además !=?

Mi función para imitar != es

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

¿Estás seguro de que es '! =' Y no '<>'? – dasblinkenlight

+0

¿Cuál es tu pregunta? ¿Por qué '! =' No funciona en vba, o ¿cuál es el operador de desigualdad en vba? – GSerg

+1

http://duckduckgo.com/?q=VBA+comparison+operators –

Respuesta

131

Debido a que el operador de desigualdad en VBA es <>

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

el operador != se utiliza en C#, C++.

24

En VBA, el operador es el operador !=Not, así:

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

Esto es incorrecto. 'Not' es el operador de inversión lógica, que corresponde a'! 'En los lenguajes estilo C. –

6

Solo una nota. Si desea comparar una cadena con "", en su caso, utilizar

If LEN(str) > 0 Then 

o incluso sólo

If LEN(str) Then 

lugar.

+6

Sé que la gente es algo nuevo en VBA, esta respuesta puede parecer rara, pero esto, lo creas o no, es mucho más eficiente que verificar contra '<>" "' – LimaNightHawk

+5

Dato curioso para respaldar esta respuesta: lenguajes de Visual Basic y Pascal almacene las cadenas con su longitud al principio y el contenido en sí mismo inmediatamente después de eso. Los lenguajes basados ​​en C y Java, por otro lado, no almacenan la longitud y tienen el terminador '\ 0' (nulo) para indicar que la secuencia finalizó. Debido a eso, obtener la longitud en VBA es rápido, solo lee un número entero de la memoria y es lento en Java, necesita iterar a través de la cadena. –

+0

@LimaNightHawk * mucho * más eficiente? ¿Puedes explicar eso por favor? Supongo que la mayoría de los compiladores modernos tomarían el patrón '<>" "' y producirían el mismo código p que 'Len (str)'. – Roland