2009-04-16 9 views
7

Lo que, en todo caso, es la ventaja de utilizarVB/VBA StrComp o =

If StrComp(strVal1, strVal2, vbTextCompare) = 0 Then 

en lugar de utilizar

If strVal1 = strVal2 Then 

Si Option Compare Text se fija en el nivel de módulo, ¿hay alguna diferencia ?

Sé que StrComp maneja escenarios nulos y <> escenarios, solo estoy interesado en la situación donde strVal1 y strVal2 tienen cadenas válidas no nulas asignadas.

Respuesta

1

Si Option Compare Text se fija en el nivel de módulo, ¿hay alguna diferencia ?

No. Simplemente ofrece un control más detallado (sin compromisos de estrategia a nivel de módulo). Sin embargo, si puede hacer tal compromiso, vaya a la opción x = y: menos código es siempre mejor código.

+1

menos código es * siempre * código mejor? [código de golf] (http://codegolf.stackexchange.com/) –

+0

@MarkCh "... todas las demás cosas son iguales", por supuesto. –

+0

StrComp con vbBinaryCompare es mucho más rápido. 'Siempre que puedas, usa la comparación binaria. Este es el valor predeterminado de VB. La comparación de texto es mucho más lenta. Http://www.aivosto.com/vbtips/stringopt.html – lpfx

2

Dado que StrComp está comparando cadena (con información cultural), UpperCase y LowerCase no se están cuidando ... (así que Hola es lo mismo que hola). En el caso de =, habrá diferentes (como usar una comparación Binaria). Si la opción de comparar el texto es a nivel del módulo, no habrá diferencia (pero debería utilizar StrComp en caso de otro tipo borrarlo) ...