Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Seleccionar y formatear un rango

| 4 comentarios

Seleccionar una celda o rango de celdas es una operación usual que se realiza antes de hacer otras acciones, como establecer un área de impresión, dar formatos, ordenar un conjunto de datos, etc. Para ello, usaremos las propiedades Range o Cells, que nos sirven además para referenciar celdas mientras se programa Excel con VBA, y así indicar sobre qué celdas se debe buscar o realizar algún evento.

Por ejemplo, para definir explícitamente un rango a seleccionar, se puede usar la siguiente macro:

Sub Macro1()

Range ("B2:B10").Select

End Sub

Después de que el rango de celdas es seleccionado, se puede hacer diferentes acciones como cambiar su formato (color de fuente, tamaño de letra, negrita, subrayado, cursiva, darle formato de número o fecha, etc). A continuación, se mostrará un ejemplo para demostrar cómo definir cada uno de ellos:

formato1

(Para mayor visualización de la imagen, hacer click en la misma)

Nota: No es necesario memorizar todas las propiedades de las celdas (los códigos), ya que se puede primero usar el grabador de macros, y cuando comience la grabación, proceder a dar formato a las celdas. Luego, se puede mirar el código generado automáticamente por Excel en VBA.

De la macro anterior, notamos que la palabra "Selection" se repite en todas las sentencias, por lo que se puede hacer más eficiente esta macro si se usa la estructura With...End With, de la siguiente manera:

formato3

(Para mayor visualización de la imagen, hacer click en la misma)

Otra manera de seleccionar un rango es usando Cells del objeto Rango, como se hizo en esta última macro. Esta requiere las posiciones fila, columna según: Cells(fila, columna); por ejemplo, a la celda D5, le correspondería Cells(5,4).

Además, notamos que con la macro, se puede dar formato sin necesariamente seleccionar el rango antes, es por ello que se digitó "With Range(Cells(2, 2), Cells(10, 2))", en lugar de "With Range(Cells(2, 2), Cells(10, 2)).Select", y esta es una ventaja de automatizar las acciones con las macros, pues además de ahorro de tiempo, es eficiente.

 

Por: Katherine Yahaira Quintero Garibay

4 comentarios

  1. excelente código faltaría agregar a mi gusto

    With Selection.Interior
    .Pattern = xlNone
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With

    en vez de fondo (azul petróleo) por lo de la impresión en papel

    saludos

  2. Hola, me pueden ayudar con este problema:

    Al copiar una lista de textos en la columna A, quisiera eliminar todas las filas que no contienen ciertas palabras (por ejemplo las palabras "azul" y "verde") dentro de la celda Ai, i =1,..., n. Además quisiera que distinga entre mayúsculas y minúsculas.

    Ejemplo:

    Si en la celda A1 dice "tengo un lápiz Azul", entonces mantener esa fila, porque dentro de la celda A1 se encuentra la palabra "lápiz"
    Si en A2 dice "la VERDE planta", entonces mantener esa fila, porque dentro de la celda A2 se encuentra la palabra "verde"
    Si en A3 dice "¿hola, como estás?" entonces eliminar esa fila, porque dentro de la celda A3 no se encuentran ni "azul" ni "verde"
    .
    .
    .y así sucesivamente..

    De antemano muchas gracias

  3. Hola.gracias por escribir, mi nesidad es dar formatos por columas. Formato de miles.
    Número. Etc.
    Hago una macro para ello.pero cuando necesito aplicar el formato a otra columna , me lleva a la columna dónde grabé la macro. Cómo hago para que me aplique el formato a la que yo decida. Gracias.

  4. Yo tengo una macro con un botón para dar un formato específico a una celda seleccionada. Ejemplo:

    Sub Fondoazul()
    '
    ActiveCell.Select
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 15773696
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
    End Sub

    Pero tengo que ir seleccionando una a una las celdas y ejecutar macro. ¿Como puedo seleccionar un rango cualquiera y dar ese mismo formato a todas las celdas.?

Deja una respuesta

Los campos requeridos estan marcados con *.