Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

Seleccionar rango en VBA

| 14 comentarios

Examinemos en este artículo las diversas formas en que se puede proceder a seleccionar un rango de celdas.

Seleccionar una celda
Para seleccionar una celda primero se activa la hoja que voy a utilizar, luego lo programo en VBA utilizando Range y select.
Sub SeleccionarCeldas()
Range("B7").Select
End Sub

Seleccionar una columna
Para seleccionar una columna primero se activa la hoja que voy a utilizar, luego lo programo en VBA utilizando Range y select, pero lo que va dentro de range es la columna que voy a seleccionar en este caso la columna (“B:B”).
Sub SeleccionaColumna()
Range("B:B").Select
End Sub

Seleccionar celdas discontinuas
Para seleccionar una celda primero se activa la hoja que voy a utilizar, luego lo programo en VBA utilizando Range y select, pero lo que va dentro de range son las celdas que voy a seleccionar en este caso las celdas ("A4:A10, D10, B5:B15").
Sub SelecionarCeldasDiscontinuas()
Range("A4:A10, D10, B5:B15").Select
End Sub

Seleccionar columnas discontinuas
Para seleccionar columnas primero se activa la hoja que voy a utilizar, luego lo programo en VBA utilizando Range y select, pero lo que va dentro de range son las columna que voy a seleccionar en este caso las columnas ("A:A, D:F").
Sub SeleccionarColumnasDiscontinuas()
Range("A:A, D:F").Select
End Sub

Seleccionar una fila
Para seleccionar una fila primero se activa la hoja que voy a utilizar, luego lo programo en VBA utilizando Range y select, pero lo que va dentro de range es la fila que voy a seleccionar en este caso la fila (“2:2”).
Sub seleccionarfila()
Range("2:2").Select
End Sub

Seleccionar filas discontinuas
Para seleccionar una filas primero se activa la hoja que voy a utilizar, luego lo programo en VBA utilizando Range y select, pero lo que va dentro de range son las filas que voy a seleccionar en este caso las filas ("2:2, 4:7").

Seleccionar celdas en una hoja específica y utilizando la propiedad Cells
Para seleccionar una celda en una hoja específica primero activo la hoja, luego lo programo en VBA utilizando worksheets,cells.select. Lo que va dentro de cells es la celda (1,1) y en worksheets la hoja. Cabe reslatar que se puede utilizar range por cells solo cambia la forma del argumento range(“A1”)
Sub Seleccionar()
Worksheets(1).Cells(1, 1).Select
End Sub
Sub Seleccionar()
Worksheets(1).range(“A1”).Select
End Sub

Seleccionar el rango actualmente utilizado en la hoja activa
Se utiliza esta manera de seleccionar rango cuando tengo una base de datos en Excel ya hecha. Para esto utilizo activesheet, usedrange, select de la siguiente forma.
Sub SelccionarRangoUtilizado()
ActiveSheet.UsedRange.Select
End Sub

Seleccionar un rango de celdas utilizando la propiedad Cells y Range
Para seleccionar un rango de celdas específica en Excel se utiliza dos formas: una con Cells y la otra con Range. En la primera dentro de range se coloca cells (1,1) que representa la celda A1 seguido de una coma cells(5,5) que representa la celda E5 luego se cierra paréntesis de la siguiente forma.
Sub seleccionarRangos()
ActiveSheet.Range(Cells(1, 1), Cells(5, 5)).Select
End Sub
La segunda forma es más rápida solo utilizando range (“A1:E5”).
Sub seleccionarRangos()
ActiveSheet.Range(“A1:A5”).Select
End Sub

Utilidad de seleccionar un rango de celdas
Al momento de seleccionar rango de celdas mediante VBA se automatiza tareas que se pueden repetir constantemente. En consecuencia hay un aumento de eficacia y eficiencia en el trabajo que realizas, puesto que reducimos horas de nuestro trabajo en realizar tareas manuales al convertirlas en automáticas.

Descargue la relación de ejemplos revisados en el siguiente enlace: Seleccionar rango en vba

14 comentarios

  1. Hola! Interesante post 
    Quisiera saber si me podrían ayudar con lo siguiente por favor.
    Constantemente debo trabajar con hojas con más de miles de datos., para lo cual utilizo permanentemente variables del tipo range.
    Lo que necesito saber si es posible seleccionar rangos de celdas, pero utilizando este tipo de variables, pues, necesito que se vayan adecuando a la variación que van experimentando dichas variables. Me explico:
    Para sumar un rango de celdas, utilizo:
    Application.WorksheetFunction.Sum(Range("aj2:aj50000"))
    Necesito reemplazar:
    (Range("aj2:aj50000"))
    Por algo así:
    (ubi1:ubi2) por ejemplo.
    No sé si será posible, pero por el momento he buscar alguna manera, pero sin resultados.
    Les quedo de antemano agradecido por su ayuda.

    • Estimado, en estos momentos tengo la misma duda. En este tiempo, ¿has podido hacerlo?

    • Eso es posible Rodrigo y ademas de varias maneras te digo una muy sencilla.

      Poniéndole un nombre al rango para referirse a el desde el administrador de nombres.
      para ir allí sitúate en una de las hojas de Excel y pulsa una a una en el teclado:
      alt
      U
      Z
      N
      G

      se abrira la ventana ( Formulas>Nombres Definidos)

      Añade un nuevo nombre y llámalo por ejemplo (Rango1)
      y en (se refiere a) escribe el rango que desees en tu caso seria (aj2:aj50000)

      Irias más rápido allí, si tienes la barra de las formulas visible, y el el lado izquierdo del todo esta el cuadro de nombres, en el que escribes (Rango1) y directamente le pondrás nombre a las celdas o rango que tengas seleccionado.

      una vez creado una referencia con un nombre a un rango tu lo puedes llamar en tus operaciones incluso desde VBA.

      tu suma quedaría tal como esta después

      Application.WorksheetFunction.Sum(Range(Rango1))

  2. muchas gracias excelente informacion

  3. Hola buenas tardes, alguien podría apoyarme en la elaboración de un código en VBA que me permita seleccionar dos rangos que no están en la hoja activa, para poder enviarlos por correo desde el mismo archivo(el problema radica que un rango es fijo pero el otro, se tiene el rango de columnas pero no de filas ya que se va incrementando conforme se captura información (es un formulario).
    Muchas gracias.
    Nota: he intentado seleccionar un rango y enviarlo por correo pero no se carga la información al parecer solo se carga cuando está como hoja activa.

  4. Estimado, tengo una duda
    es posible que pueda referirme a una celda de otra hoja2 mientras esta activo la hija1, y siendo muy especifico utilizando rango(cells(n,m)) donde m,n son valores que yo introduzca
    espero su Pronta respuesta
    PD: gracias por la información que nos proporciona

  5. Hola, espero algun buen programador o quien sea me pueda ayudar
    Quiero extraer de una celda con la función left los 3 primeros digitos hasta ahí todo bien solo que quiero que seleccione una columna en esa columna busque una palabra con selection.find y luego se mueva una selva hacia abajo y que de ahí extraiga los datos pude haver esto pero en la celda que muestra el resultado me arroja como resultado la palabra true si le digo que quiero los tres primeros digitos me arroja tru este sería el código
    Sub extraedatos ()
    Dim seleccion As String
    Dim rango As String

    seleccion = Columns("D").Select
    Selection.find (what:="slot").Select
    ActiveCell.Offset (1,0).Select
    Rango=3

    Range ("F6")=" ' " & Left (seleccion, rango)

    End sub

    Se supone que encuentra slot se posiciona ahí baja una celda y de ahí extrae los datos y en la celda F6 los coloca ejemplo si tengo 123005 los que tendía que extraer serian 123 (con la función left) pero me arroja TRU? ?? Ayuda por favor

  6. Buenas. Muy interesante el articulo y ya de paso la web. Me ha ayudado en bastantes ocasiones. Pero ahora necesito otra vez vuestra ayuda, siempre que sea posible.
    Tengo una formula que me da como resultado, una columna y una fila (ejemplo: P33). Y ahora quiero mediante boton (con ActiveX u otro sistema si lo considerais mejor), que reconozca este resultado y vaya o seleccione la celda que ha salido de la Formula. O si puede ser meter la formula en VBA y que vaya directamente. La menera mas sencilla.
    Llevo buscando bastante por vuestra web y otras.. y no encuentro nada, o mejor dicho, no lo he sabido buscar.
    ¿Alguna idea?.
    Muchas gracias por vuestra ayuda y a seguir mejorardo la web con contenidos tan beneficiosos como estos.

    *nota: no se porque pero no puedo poner acentos :D. La mirare mejor. Gracias.

  7. Buenas. Estoy tratando de desarrollar una macro que me permita seleccionar un rango continuo de filas y las elimine.
    Nosotros llenamos una tabla con datos hasta cualquier fila, lo que requerimos es que la macro seleccione la primera fila vacía de la tabla después de ser llenada hasta la última fila de la tabla y las elimine.
    Gracias.

  8. Hola con todos,
    Pongo a disposición de todos ustedes una programación para poner numeración correlativa en VBA tomando como referencia las celdas que estén en alguna Columna la programación sería:

    Sub Numeracion()
    Dim i As Integer
    Dim ultimaFila1 As Long

    ultimaFila = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row

    For i = 1 To ultimaFila
    Cells(i, 2).FormulaR1C1 = i
    Next i
    End Sub

    Para colocar la Numeración en otra celda se debe hacer el sgte cambio, por Ejm: Si la Numeración se quiere que inicie en "C2" sería:

    Sub Numeracion()
    Dim i As Integer
    Dim ultimaFila1 As Long

    ultimaFila = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row

    For i = 1 To ultimaFila 'si se quiere que no tome todas las
    celdas de la columna "A" se va quitando
    celdas a ultimaFila por ejm: ultima fila - 1

    Cells(i + 1, 3).FormulaR1C1 = i 'tambien se le aumenta a
    Cells(i + 2,3).FormulaR1C1
    Next i
    End Sub

    Nos vemos.

  9. Buenas.

    Necesito eliminar una celda especifica de una fila/columna.
    El problema es que dicha celda puede variar, por lo que no puedo decirle a VBA propiamente que celda es.
    Para poder eliminar dicha celda se debe cumplir una condicion en otra de las celdas de la misma fila.

    Ejemplo:
    Si A7 > 5 ENTONCES eliminar D7.

    Si alguno sabe como hacerlo por favor solicito de su ayuda.
    Muchas gracias.

  10. Buenos Tardes, tengo una hoja de trabajo y el cursos esta en la columna 150 por ejemplo, y acciono otra consulta y vuelve a la hoja. Modifica los valores y muestra bien todo lo que seleccione pero sigo estando parada en la columna 150 aunque puse .range("A1").Select
    Hay una funcion que me posicione la hoja al inicio.

    Gracias

  11. saludos amigos, si alguien me puede ayudar necesito un VBA que permita recorrer las filas y meter en una variable tipo range todas las filas cuya columna 3 tenga un valor 5

  12. hola estuve usando la funcion de selecion de filas completas, pero tengo una duda si mi seleccion de filas no siempre sera la misma ejem:

    mi macro la grabe con que selecione la fila 2 pero no siempre sera la fila 2 si no dependera de donde se encuentre en el dato puede estar en la 2 como tambien en la 762. que funcion puedo usar em ese caso ?

Deja una respuesta

Los campos requeridos estan marcados con *.