Supongamos que tiene una hoja de trabajo en blanco y el rango A1: F1 tiene el formato «fusionar y centrar» aplicado. Si selecciona la columna B haciendo clic en el encabezado de la columna, Excel selecciona debidamente la columna B y convierte la celda B2 en la celda activa. Este comportamiento se modificó en Excel 2000 o Excel 2002; en versiones anteriores de Excel obtienes la celda combinada (A1: F1)

incluido en la selección.

Aparentemente, VBA se queda un poco por detrás del comportamiento de la interfaz de usuario, ya que al seleccionar toda la columna B también termina seleccionando todas las columnas, de la A a la F:

Sub TestMacro1()

Range("B3").EntireColumn.Select End Sub

Parece que no hay forma de evitar este comportamiento. Incluso si elimina el método EntireColumn y simplemente selecciona la columna B, obtendrá todas las columnas, de la A a la F:

Sub TestMacro2()

Range("B:B").Select End Sub

Probablemente sea un mejor enfoque de programación no seleccionar la columna preparatoria para realizar alguna acción en esa columna, sino realizar la acción directamente. Por ejemplo, supongamos que desea poner en negrita todas las celdas de la columna B. Puede hacerlo de esta manera:

Sub TestMacro3()

Range("B3").EntireColumn.Font.Bold = True End Sub

Esto afecta solo a las celdas en la columna B, y nada en A o C a F. De manera similar, podría usar un enfoque iterativo para procesar las celdas en la columna deseada:

Sub TestMacro4()

Dim rCell As Range     Dim X As Long

X = 1     For Each rCell In Range("B:B")

rCell.Value = X         X = X + 1     Next End Sub

Esto introduce un valor en cada celda de la columna B y convenientemente ignora cualquier combinación que incluya una celda en la columna B.

Si es obligatorio que pueda seleccionar una columna completa, sin columnas agregadas debido a las celdas combinadas, entonces puede tener la tentación de usar la propiedad MergeCells para verificar las celdas combinadas. Según la ayuda en línea de VBA, lo siguiente debería detectar las celdas fusionadas en la selección y luego volcar fuera de la macro:

Sub TestMacro5()

Range("B3").EntireColumn.Select     If Selection.MergeCells Then         Exit Sub     End If ' ' Perform rest of macro ' End Sub

Desafortunadamente, las pruebas muestran que este código no funcionará. La propiedad MergeCells aparentemente solo devuelve True si toda la selección está formada por celdas combinadas, no si la selección solo contiene algunas celdas combinadas. Eso significa que le queda otra forma de determinar si las celdas fusionadas han modificado la selección deseada, como la siguiente:

Sub TestMacro6()

Range("B3").EntireColumn.Select     If Selection.Columns.Count > 1 Then         Exit Sub     End If ' ' Perform rest of macro ' End Sub

Este enfoque examina el número de columnas de la selección y luego se descarga si Excel informa que hay más de una.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (3093) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Selecting_Columns_in_VBA_when_Cells_are_Merged [Selección de columnas en VBA cuando las celdas se fusionan].