No siempre podemos evitar el uso de "combinar y centrar", ya sea porque el rango a unificar es vertical (no exste la posibilidad de "centrar en la selección" verticalmente) o porque estamos lidiando con un cuaderno que recibimos de algún colega.
Si queremos "descombinar" todos los rangos combinados en una hoja, podemos seleccionar todas las celdas de la hoja (Ctrl-E o clic en el cuadrdado a la izquierda y arriba de A1) y pulsar el botón "Combinar y centrar". Si queremos reemplazar el "combinar y centrar" por el "centrar en la selección", podemos usar la macro que aparece en el post mencionado.
Si queremos marcar los rangos de celdas combinadas en una hoja de Excel, podemos usar esta macro. Las áreas combinadas aparecerán con fondo rojo; por supuesto, podemos adaptar el código para dar cualquier otro formato (por ejemplo, borde)
Sub mark_merged_cells()
Dim rngSearchArea As Range, rngCell As Range
Set rngSearchArea = Range(Cells(1, 1), _
Range(Cells.SpecialCells(xlCellTypeLastCell).Address))
For Each rngCell In rngSearchArea
If rngCell.MergeCells = True Then
rngCell.Interior.Color = 190
End If
Next rngCell
End Sub
Sub select_merged_cells()
Si queremos sólo seleccionar las áreas combinadas, usamos esta macro
Sub select_merged_cells()
Dim rngSearchArea As Range, rngCell As Range
Dim rngTemp As Range
Set rngSearchArea = Range(Cells(1, 1), _
Cells.SpecialCells(xlCellTypeLastCell).Address)
For Each rngCell In rngSearchArea
If rngCell.MergeCells = True Then
If rngTemp Is Nothing Then
Set rngTemp = rngCell
Else
Set rngTemp = Union(rngTemp, rngCell)
End If
End If
Next rngCell
rngTemp.Select
End Sub
Dim rngSearchArea As Range, rngCell As Range
Dim rngTemp As Range
Set rngSearchArea = Range(Cells(1, 1), _
Cells.SpecialCells(xlCellTypeLastCell).Address)
For Each rngCell In rngSearchArea
If rngCell.MergeCells = True Then
If rngTemp Is Nothing Then
Set rngTemp = rngCell
Else
Set rngTemp = Union(rngTemp, rngCell)
End If
End If
Next rngCell
rngTemp.Select
End Sub
En ambas macros definimos el área de búsqueda desde la celda A1 hasta la última celda usada en la hoja (para evitar que la macro corra por toda la eternidad) con
Set rngSearchArea = Range(Cells(1, 1), Range(Cells.SpecialCells(xlCellTypeLastCell).Address))
Para seleccionar simultáneamente los distintos rangos en la segunda macro, usamos el método Union.
Muy buenas las macros.
ResponderBorrarYo había echo una petición acá para este fin. y nadie me respondio, hasta que ahora aparece este post.
Gracias
Joao, este es una blog, no un foro. Para recibir varias respuestas a una consulta te sugiero plantearla en los muchos y buenos foros de Excel que existen en la Web.
ResponderBorrarMuy buena solución, por rematarlo, sería ideal que cuando no encuentra una celda combinada no rompiera en error. En su lugar, mejor si diese un mensaje emergente.
ResponderBorrarTotalmente acertado. En las próximas horas subiré los códigos modificados.
ResponderBorrar