Lección 9: Combinar celdas automáticamente con macros.

Escrito por Administrador

23 de agosto de 2021

En esta lección, vas a aprender a combinar / descombinar celdas y a realizar el filtrado de datos de manera automática. ¡Vamos allá!

Para combinar un rango de celdas, usaremos la propiedad Merge:

Range(“D2:E4”).Merge

O bien:

Range(Cells(2, “D”), Cells(4, “E”)).Merge

Si, por el contrario, lo que queremos es descombinar celdas, usaremos la propiedad UnMerge:

Range(“D2:E4”).UnMerge

O bien:

Range(Cells(2, “D”), Cells(4, “E”)).UnMerge

Vamos a ir mezclando conceptos y complicando un poquito los ejercicios.

La idea es combinar y descombinar las celdas que elijamos rellenando 4 celdas correspondientes a fila/columna de inicio del rango y fila/columna de fin del rango. Haremos uso para ello de variables. ¡Empezamos!

Crea un libro nuevo, abre el editor VBA, inserta 3 módulos y copia las siguientes macros en ellos:

 

Macro 1

Sub Leccion9_1()

‘Macro que combina las celdas seleccionadas en el recuadro (Método 1)

‘Declaramos las cuatro variables como enteros porque van a ser números

Dim Filainicio As Integer                                           

Dim Filafinal As Integer

Dim Columnainicio As Integer

Dim Columnafinal As Integer

‘Guardamos el valor de la celda C4 en la variable Filainicio

Filainicio = Range(“C4”).Value  

‘Guardamos el valor de la celda D4 en la variable Filafinal        

Filafinal = Range(“D4”).Value     

‘Guardamos el valor de la celda C5 en la variable Columnainicio            

Columnainicio = Cells(5, “C”).Value   

‘Guardamos el valor de la celda D5 en la variable Columnafinal              

Columnafinal = Cells(5, 4).Value            

‘Combinamos las celdas del rango

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Merge                  

‘Escribimos el texto “Combinadas”                                      

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Value = “Combinadas”    

‘Alineamos horizontalmente el texto                  

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).HorizontalAlignment = xlCenter     

‘Alineamos verticalmente el texto        

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).VerticalAlignment = xlCenter       

End Sub

Macro 2

Sub Leccion9_2()

‘Macro que descombina las celdas seleccionadas en el recuadro

‘Declaramos las cuatro variables como enteros porque van a ser números

Dim Filainicio As Integer                                           

Dim Filafinal As Integer

Dim Columnainicio As Integer

Dim Columnafinal As Integer

‘Guardamos el valor de la celda C4 en la variable Filainicio

Filainicio = Range(“C4”).Value     

‘Guardamos el valor de la celda D4 en la variable Filafinal         

Filafinal = Range(“D4”).Value   

‘Guardamos el valor de la celda C5 en la variable Columnainicio            

Columnainicio = Cells(5, “C”).Value   

‘Guardamos el valor de la celda D5 en la variable Columnafinal              

Columnafinal = Cells(5, 4).Value       

‘Borramos el texto “Combinadas”         

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).ClearContents

‘Descombinamos las celdas del rango  

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).UnMerge                

End Sub

Macro 3

Sub Leccion9_3()

‘Macro que combina las celdas seleccionadas en el recuadro (Método 2)

‘Declaramos las cuatro variables como enteros porque van a ser números

Dim Filainicio As Integer                                           

Dim Filafinal As Integer

Dim Columnainicio As Integer

Dim Columnafinal As Integer

‘Guardamos el valor de la celda C4 en la variable Filainicio

Filainicio = Range(“C4”).Value  

‘Guardamos el valor de la celda D4 en la variable Filafinal        

Filafinal = Range(“D4”).Value          

‘Guardamos el valor de la celda C5 en la variable Columnainicio            

Columnainicio = Cells(5, “C”).Value  

‘Guardamos el valor de la celda D5 en la variable Columnafinal              

Columnafinal = Cells(5, 4).Value

‘Seleccionamos las celdas del rango                     

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Select                    

‘Combinamos las celdas del rango

Selection.Merge     

‘Escribimos el texto “Combinadas”                                    

Selection.Value = “Combinadas”

‘Alineamos horizontalmente el texto                 

Selection.HorizontalAlignment = xlCenter   

‘Alineamos verticalmente el texto

Selection.VerticalAlignment = xlCenter              

End Sub

Rellena la hoja con los valores que se muestran a continuación y crea tres botones asociados a las macros que acabamos de copiar. Debería quedarte algo así:

total-operaciones-matematicas-macros

Si ejecutas la primera macro, verás cómo se combinan las celdas seleccionadas en la cuadrícula. Puedes escribir los valores que quieras en ella, pero evita las 10 primeras filas y las 6 primeras columnas para no desconfigurar la tabla.

En esta macro he utilizado tres formas distintas para asignar valores a las variables, usa la que más te guste:

Filafinal = Range(“D4”).Value                  ‘Primera forma

Columnainicio = Cells(5, “C”).Value         ‘Segunda forma

Columnafinal = Cells(5, 4).Value            ‘Tercera forma

La segunda macro va a borrar el contenido de las celdas combinadas “Combinadas” y va a descombinarlas, volviendo a la situación original.

total-operaciones-matematicas-macros

La tercera de las macros realiza la misma función que la primera, pero el código varía ligeramente. Lo que hemos hecho es seleccionar el rango de celdas con el comando:

‘Seleccionamos las celdas del rango

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Select      

Para posteriormente realizar las operaciones de combinación, asignación de valor y alineación del texto haciendo referencia a esa selección, es decir, sin tener que escribir todo el chorizo de Range… en cada comando.

‘Combinamos las celdas del rango

Selection.Merge                

‘Escribimos el texto “Combinadas”                      

Selection.Value = “Combinadas”

‘Alineamos horizontalmente el texto                 

Selection.HorizontalAlignment = xlCenter   

‘Alineamos verticalmente el texto

Selection.VerticalAlignment = xlCenter       

Es lo mismo, pero ahorramos tiempo.

Con esto llegamos al final de la novena lección. 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

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

L10. Filtrar y ordenar datos 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