En la lección anterior comenzamos a ver el funcionamiento de los comandos IF y CASE, y cómo nos ayudan a elegir el momento en el que queremos que se ejecute una determinada acción o acciones. Ahora, veremos cómo usar el comando IF de diferentes maneras en VBA.
Hoy veremos dos tipos de comandos condicionales “prediseñados” muy útiles en determinados casos. ¡Vamos allá!
1. IF ISEMPTY
Cuando comiences a programar macros, te darás cuenta de que en multitud de situaciones necesitarás saber si una celda está vacía o no. Bien, para esto sirve este comando. Su sintaxis es la siguiente:
'Acciones a realizar si la celda está vacía
Else
'Acciones a realizar si la celda contiene algún valor
End if
Si quisiéramos lo contrario, escribiríamos:
'Acciones a realizar si la celda contiene algún valor
Else
'Acciones a realizar si la celda está vacía
End if
Hay que tener en cuenta que si en una celda hubiera un espacio (el cual no se puede ver), Excel no reconocería a la celda como vacía.
2. IF LIKE
Si estamos trabajando con textos, y no queremos basar la condición en la palabra exacta, sino en parte de ella, usaremos este comando. Su sintaxis es la siguiente:
'Acciones a realizar si la celda contiene una cadena de texto como la introducida
Else
'Acciones a realizar en caso contrario
End if
Vamos a realizar un ejercicio donde veremos distintas maneras de utilizar el comando IF en VBA.
En primer lugar, crea un libro nuevo, abre el editor VBA, inserta 3 módulos y copia en ellos las siguientes macros.
Macro 1. Escribir un valor en una celda si está vacía.
'Macro que coloca el valor "Francia" en la celda C2 si está vacía
'Si la celda C2 está vacía entonces
If IsEmpty(Cells(2, 3).Value) Then
'Coloca el valor Francia en la celda C2
Cells(2, 3).Value = "Francia"
End If
End Sub
Macro 2. Borrar el valor de una celda si contiene información.
'Macro que borra el valor de la celda C2 si contiene información
'Si la celda C2 NO está vacía entonces
If Not IsEmpty(Cells(2, 3).Value) Then
'Borra el contenido de la celda C2
Cells(2, 3).ClearContents
End If
End Sub
Macro 3. Comprobar si un nombre contiene una cadena de texto.
'Macro que comprueba si el nombre contiene la cadena "er", y en caso afirmativo colorea de rojo el 'nombre y apellidos
'Si la celda A2 contiene la cadena de texto "er" entonces
If Cells(2, 1).Value Like "*er*" Then
'Colorea de rojo el nombre y apellido
Range("A2:B2").Font.ColorIndex = 3
'Si la celda A2 NO contiene la cadena de texto "er" entonces
Else
'Colorea de negro el nombre y apellido
Range("A2:B2").Font.ColorIndex = 1
End If
End Sub
Crea ahora tres botones y asígnale cada una de las macros anteriores. Rellena la hoja como se ve en la figura:
Cuando ejecutas la primera macro, como la celda C2 está vacía, se va a rellenar automáticamente con la palabra “Francia”.
Al ejecutar la segunda macro, como la celda C2 contiene información, automáticamente se borra y volvemos al estado anterior. Si volviéramos a ejecutar la primera macro, volveríamos a rellenar C2 con la palabra “Francia”.
Con la tercera macro, comprobamos si el nombre que tenemos introducido en el campo contiene la cadena de caracteres “er”. En el ejemplo, sí que está contenida en la palabra “Roberto”, por lo que en nombre y el apellido se teñirán de rojo.
Si cambiamos el nombre, y elegimos Paco, por ejemplo, al ejecutar la tercera macro, el nombre y apellido vuelven a colorearse de negro.
Prueba a probar ahora con el nombre “Alberto”…
Con esto llegamos al final de la decimotercera lección, en la que has aprendido a utilizar el comando IF en VBA.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Nos vemos en el próximo capítulo.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
« L12. Condicionales en macros (1).
L14. La función msgbox en VBA. »
0 comentarios