Lección 13: Condicionales en macros. Comando IF en VBA (2).

comando-if-vba

Escrito por Administrador

13 de septiembre de 2021

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:

If IsEmpty(celda o variable) then

'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:

If Not IsEmpty(celda o variable) then

'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:

If valor1 like "*cadena*" then

'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.

Sub Leccion13_1()

'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.

Sub Leccion13_2()

'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.

Sub Leccion13_3()

'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:

total-operaciones-matematicas-macros

Cuando ejecutas la primera macro, como la celda C2 está vacía, se va a rellenar automáticamente con la palabra “Francia”.

total-operaciones-matematicas-macros

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.

total-operaciones-matematicas-macros

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. Espero que te esté gustando el curso y que me plantees cualquier duda que te surja. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L12. Condicionales en macros (1).

L14. La función msgbox en VBA. »

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto