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, 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

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.

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

L10. Filtrar y ordenar datos con macros. »

Categorías

marzo 2024
LMXJVSD
 123
45678910
11121314151617
18192021222324
25262728293031

Debates en el foro

Avatar
Formularios con ADO

Contacto