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

Escrito por Administrador

17 de septiembre de 2021

En esta lección, vas a aprender a combinar y descombinar celdas de manera automática utilizando macros.

En primer lugar, para combinar un rango de celdas, usaremos la propiedad Merge:

Range("D2:E4").Merge

También, es posible usar la siguiente sintaxis:

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

Igualmente es posible usar esta otra sintaxis:

Range(Cells(2, "D"), Cells(4, "E")).UnMerge

A continuación, vamos a poner todo esto en práctica y a combinar/descombinar celdas usando macros.

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

 

Macro 1. Combinar las celdas seleccionadas.

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. Descombinar las celdas seleccionadas.

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. Combinar las celdas seleccionadas (otro método).

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

Seguidamente, rellena la hoja con los valores que se muestran a continuación y crea tres botones asociados a las macros que acabamos de copiar. A continuación, Te dejo el enlace al tema donde explico cómo asociar macros a botones, por si te interesa.

Finalmente, debería quedarte algo así:

total-operaciones-matematicas-macros

Como resultado, si ejecutas la primera macro, verás que 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.

Además, en esta macro he utilizado tres formas distintas para asignar valores a las variables. En realidad, puedes usar 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 a descombinarlas volviendo, por lo tanto, a la situación original.

total-operaciones-matematicas-macros

Por último, la tercera de las macros realiza la misma función que la primera, pero el código varía ligeramente. En realidad, 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 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 todo esto, llegamos al final de la novena lección, en la que has aprendido a combinar celdas automáticamente usando macros.

Por último, desear que te esté gustando el curso y pedirte 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. »

Por favor, ayúdame y haz clic en el anuncio. Solo te lleva un segundo 😉

 


0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.

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

Quizá te interese,

Contacto