Lección 7: Automatizar el formato de una celda con macros.

formato-celda-macros

Escrito por Administrador

19 de septiembre de 2021

En esta lección, vas a aprender a personalizar de manera automática el aspecto de una celda: tipo de fuente, color del texto, alineación, color de fondo, bordes…), es decir, a automatizar el formato de una celda con macros.

Antes de empezar, te dejo un enlace donde explico cómo configurar Microsoft Excel para el uso de macros, por si aún no lo has hecho.

¡Empezamos!

1. Tipo de fuente.

Para seleccionar el tipo de fuente en una determinada celda usaremos:

Cells(2,3).Font.Name = "Arial"

Sin embargo, si se trata de un rango de celdas usaremos:

Range("A1:C2").Font.Name = "Arial"

El tipo «Arial» puede ser sustituido por el nombre del tipo de letra que queramos utilizar, siempre y cuando aparezcan en el listado del menú Inicio de Microsoft Excel.

De manera similar, podíamos también haber seleccionado primero el rango, y después haber hecho referencia a la selección, de esta manera:

Cells(2,3).Select

Y, si se trata de un rango:

Range("A1:C2").Select

Y después:

Selection.Font.Name = "Arial"

Además, esto es aplicable a todas las propiedades que veremos a continuación.

2. Tamaño de fuente.

Si queremos seleccionar el tamaño de la fuente, usaremos las siguientes sintaxis, dependiendo de si se trata de una celda o un rango de ellas:

Cells(2,3).Font.Size = 8

Range("A1:C2").Font.Size = 8

3. Estilo de la fuente.

Así mismo, podemos seleccionar el aspecto de la fuente (negrita, cursiva o subrayada) en una determinada celda o un rango de celdas, usando:

Cells(2,3).Font.Bold = True                         'Activa el aspecto negrita en una celda

Cells(2,3).Font.Bold = False                        'Desactiva el aspecto negrita en una celda

Range("A1:C2").Font.Bold = True                 'Activa el aspecto negrita en un rango de celdas

Range("A1:C2").Font.Bold = False                'Desactiva el aspecto negrita en un rango de celdas

Cells(2,3).Font.Italic = True                        'Activa el aspecto cursiva en una celda

Cells(2,3).Font.Italic = False                       'Desactiva el aspecto cursiva en una celda

Range("A1:C2").Font.Italic = True                 'Activa el aspecto cursiva en un rango de celdas

Range("A1:C2").Font.Italic = False                'Desactiva el aspecto cursiva en un rango de celdas

Cells(2,3).Font.Underline = True                   'Activa el aspecto subrayado en una celda

Cells(2,3).Font.Underline = False                  'Desactiva el aspecto subrayado en una celda

Range("A1:C2").Font.Underline = True            'Activa el aspecto subrayado en un rango de celdas

Range("A1:C2").Font.Underline = False           'Desactiva el aspecto subrayado en un rango de celdas

4. Color de la fuente.

Otra característica del formato de una celda que podemos cambiar usando macros es el color de la fuente. Para cambiarlo en una determinada celda o un rango de ellas, usaremos:

Cells(2,3).Font.ColorIndex = 7

Range("A1:C2").Font.ColorIndex = 7

El número hace referencia a la paleta de colores de abajo. Así, en el ejemplo anterior, habríamos elegido un color de texto rosa.

Sin embargo, si queremos elegir un color personalizado, usaremos:

Cells(2,3).Font.Color = RGB(230,146,224)

Range("A1:C2").Font.Color = RGB(230,146,224)

5. Color de la celda.

Para seleccionar un color de celda o rango de celdas de la paleta anterior, usaremos la sintaxis que corresponda:

Cells(2,3).Interior.ColorIndex = 3            

Range("A1:C2").Interior.ColorIndex = 3

En cambio, para elegir un color personalizado, usaremos:

Cells(2,3).Interior.Color = RGB(253,141,157)

Range("A1:C2").Interior.Color = RGB(253,141,157)

6. Alineación del texto.

La manera de alinear horizontalmente un texto (centro, izquierda, derecha, distribuido y justificado) de una celda o de un rango de celdas, es la siguiente:

Cells(2,3).HorizontalAlignment = xlCenter         

Range("A1:C2").HorizontalAlignment = xlCenter

Estas son sus propiedades: xlCenter, xlLeft, xlRight, xlDistributed y xlJustify.

Por otro lado, para alinear verticalmente un texto (centro, arriba, abajo distribuido y justificado) de una celda o de un rango de celdas, usaremos:

Cells(2,3).VerticalAlignment = xlCenter

Range("A1:C2").VerticalAlignment = xlCenter

Siendo las propiedades: xlCenter, xlTop, xlBottom, xlDistributed y xlJustify.

7. Bordes de celda.

Finalmente, la última característica del formato de una celda que podemos modificar usando macros son sus bordes. Para modificarlos, debemos señalar dónde queremos el borde y el estilo de línea del mismo.

Cells(2,3).Borders(xlEdgeBottom).Linestyle = xlContinuous

Range("A1:C2").Borders(xlEdgeBottom).Linestyle = xlContinuous

Las posibles posiciones son las siguientes: xlNone, xlEdgeBottom, xlEdgeTop, xlEdgeLeft, xlEdgeRight, xlDiagonalDown, xlDiagonalUp, xlInsideVertical y xlInsideHorizontal.

Y los tipos de línea: xlContinuous, xlDash, xlDashDot, xlDashDotDot, xlDot, xlDouble y xlSlantDashDot.

También, podemos añadir a las líneas de borde atributos de color,

Cells(2,3).Borders(xlEdgeBottom).Color = RGB(127,200,100)

Range("A1:C2").Borders(xlEdgeBottom).Color = RGB(127,200,100)

Así como, grosor:

Cells(2,3).Borders(xlEdgeBottom).Weight = xlThick

Range("A1:C2").Borders(xlEdgeBottom).Weight = xlThick

Estos son los grosores disponibles: xlHairline, xlThin, xlMedium y xlThick.

Si lo que queremos es añadir bordes a todo alrededor de nuestra celda o rango de celdas, usaremos:

Cells(2, 3).BorderAround _
LineStyle:=xlDashDotDot, ColorIndex:=3, Weight:=xlThick

Vamos a consolidar todos estos conceptos con un ejercicio que englobe todos los cambios de formato de una celda usando macros.

En primer lugar, crea un libro nuevo, abre el editor VBA, inserta cuatro módulos y copia estas cuatro macros:

 

Macro 1. Cambiar el formato a una celda.

Sub Leccion7_1()

'Macro que configura la celda I3 de la siguiente manera: Fuente tipo Arial, tamaño 8, en negrita, color texto rojo, color celda amarillo, alineación horizontal izquierda, alineación vertical arriba, borde completo fino discontinuo de color rojo

Cells(3, "I").Font.Name = "Arial"                                                   'Tipo letra Arial

Cells(3, "I").Font.Size = 8                                                              'Tamaño letra 8

Cells(3, "I").Font.Bold = True                                                        'Negrita

Cells(3, "I").Font.ColorIndex = 3                                                    'Color texto rojo

Cells(3, "I").Interior.ColorIndex = 6                                                'Color de celda amarillo

Cells(3, "I").HorizontalAlignment = xlLeft                                     'Alineación horizontal a la izquierda

Cells(3, "I").VerticalAlignment = xlTop                                          'Alineación vertical arriba

Cells(3, "I").BorderAround _
LineStyle:=xlDashDotDot, ColorIndex:=3, Weight:=xlThick 
         'Borde completo fino discontinuo rojo

End Sub

Macro 2. Cambiar el formato a una celda.

Sub Leccion7_2()

'Macro que configura la celda I5 de la siguiente manera: Fuente tipo Calibri, tamaño 12, en cursiva, color texto azul, color celda naranja, alineación horizontal derecha, alineación vertical abajo, borde inferior continuo ancho azul

Cells(5, "I").Font.Name = "Calibri"                                                 'Tipo letra Calibri

Cells(5, "I").Font.Size = 12                                                            'Tamaño letra 12

Cells(5, "I").Font.Italic = True                                                        'Cursiva

Cells(5, "I").Font.ColorIndex = 5                                                    'Color texto azul

Cells(5, "I").Interior.ColorIndex = 46                                              'Color de celda naranja

Cells(5, "I").HorizontalAlignment = xlRight                                   'Alineación horizontal a la derecha

Cells(5, "I").VerticalAlignment = xlBottom                                    'Alineación vertical abajo

Cells(5, "I").Borders(xlBottom).LineStyle = xlContinuous              'Borde inferior continuo

Cells(5, "I").Borders(xlBottom).Weight = xlThick                           'Borde inferior ancho

Cells(5, "I").Borders(xlBottom).ColorIndex = 5                              'Borde inferior continuo ancho azul

End Sub

Macro 3. Cambiar el formato a una celda.

Sub Leccion7_3()

'Macro que configura la celda I7 de la siguiente manera: Fuente tipo Times New Roman, tamaño 20, subrayada, color texto blanco, color celda rosa, alineación horizontal al centro, alineacion vertical al centro, bordes izquierdo y derecho continuos

Cells(7, "I").Font.Name = "Times New Roman"                               'Tipo letra Times New Roman

Cells(7, "I").Font.Size = 20                                                              'Tamaño letra 20

Cells(7, "I").Font.Underline = True                                                  'Subrayada

Cells(7, "I").Font.ColorIndex = 2                                                     'Color texto blanco

Cells(7, "I").Interior.ColorIndex = 7                                                 'Color de celda rosa

Cells(7, "I").HorizontalAlignment = xlCenter                                  'Alineación horizontal al centro

Cells(7, "I").VerticalAlignment = xlCenter                                       'Alineación vertical al centro

Cells(7, "I").Borders(xlLeft).LineStyle = xlContinuous                     'Borde izquierdo continuo

Cells(7, "I").Borders(xlLeft).Weight = xlThick                                  'Borde izquierdo ancho

Cells(7, "I").Borders(xlRight).LineStyle = xlContinuous                   'Borde derecho continuo

Cells(7, "I").Borders(xlRight).Weight = xlThick                                'Borde derecho ancho

End Sub

Macro 4. Cambiar el formato a una celda.

Sub Leccion7_4()

'Macro que vuelve a la configuración inicial el rango de celdas I3-I7: Fuente tipo Calibri, tamaño 11, color texto negro, color celda blanco, alineación horizontal al centro, alineacion vertical al centro, sin bordes

Range("I3:I7").Font.Name = "Calibri"                                             'Tipo letra Calibri

Range("I3:I7").Font.Size = 11                                                        'Tamaño letra 20

Range("I3:I7").Font.Bold = False                                                   'Sin negrita

Range("I3:I7").Font.Italic = False                                                  'Sin cursiva

Range("I3:I7").Font.Underline = False                                           'Sin subrayar

Range("I3:I7").Font.ColorIndex = 1                                               'Color texto negro

Range("I3:I7").Interior.ColorIndex = 2                                           'Color de celda blanco

Range("I3:I7").HorizontalAlignment = xlCenter                            'Alineación horizontal al centro

Range("I3:I7").VerticalAlignment = xlCenter                                 'Alineación vertical al centro

Range("I3:I7").Borders.LineStyle = xlNone                                    'Sin bordes

Range("I3:I7").Interior.Pattern = xlNone                                       'Restablecer la cuadrícula de la hoja excel

Range("I3:I7").Interior.TintAndShade = 0                      

Range("I3:I7").Interior.PatternTintAndShade = 0        

End Sub

Seguidamente, crea cuatro botones y asígnales las cuatro macros. Completa la hoja tal y como aparece en la figura.

Finalmente, ejecuta las tres primeras macros. Verás que las celdas de las tres ciudades se configuran tal y como queríamos.

Todo esto alcanzará su sentido cuando veamos los condicionales, y podamos asignar distintos formatos a las celdas en función de sus propios valores o de los de otras celdas.

Por último, indicar que la cuarta macro devuelve al estado original las celdas de las ciudades para que puedas volver a repetir el proceso cuantas veces quieras.

También, quiero que seas consciente de que en las tres primeras macros trabajamos con celdas y en la cuarta, trabajamos con rangos.

Con esto llegamos al final de la séptima lección, en la que has aprendido cómo modificar el formato de una celda usando macros.

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

« L6. Copiar, pegar y borrar celdas con macros.

L8. Agregar/eliminar filas y columnas con macros. »

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