Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

Utilidad del offset

| 27 comentarios

La función offset sirve para poder moverse a través de la hoja de cálculo, tal como si lo hiciéramos con las flechas del teclado (arriba, abajo, izquierda, derecha).

Offset(número de filas, número de columnas)

Ejemplos:

ActiveCell.Offset(1, 0).Select   -> Avanza una fila (abajo)
ActiveCell.Offset(0, 1).Select  -> Avanza una columna (derecha)
ActiveCell.Offset(2, -1).Select -> Avanza 2 filas (abajo) y retrocede 1 columna (izquierda)
ActiveCell.Offset(0, 0).Select   ->  Se mantiene en la misma celda activa

Con esta función igualmente podemos poner valores a la celda activa seleccionada. Por ejemplo, la siguiente macros:

Sub utilidad_del_offset()
Dim TITULO As Range
Set TITULO = Range("A1")
TITULO.Offset(1, 0).Value = "Utilidad del Offset"
End Sub

Los resultados serán que el título "Utilidad del Offset" será colocado 1 fila debajo de la celda A1:

15 300x161 Utilidad del offset

Otra utilidad es para irse a la primera fila en blanco al final de una tabla completa de datos. La sentencia sería (considerando que estamos dentro de la tabla):

Sub fin_inferior_de_la_tabla()
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End Sub

Igualmente para irse al final derecho de la tabla:

Sub fin_der_de_la_tabla()
Selection.End(xlToRight).Select
Selection.Offset(0,1).Select
End Sub

Publicado por: Pamela Gonzales

27 comentarios

  1. En los ejemplos de macros mostradas como la siguiente:

    Sub fin_inferior_de_la_tabla()
    ActiveCell.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    End Sub

    se puede aplicar otra macro para abreviar escrituras y posibles complicaciones utilizando with end-with. Quedaría de la siguiente manera:

    Sub fin_inferior_de_la_tabla()

    With ActiveCell
    .End(xlDown).Select
    .Offset(1, 0).Select
    End With

    End Sub

  2. Esta función, tiene cierta similitud con la función FormulaR1C1.
    Ambas se utilizan para ubicar el puntero de celda y colocar datos o tomar los datos de esas celdas.

  3. Me parece un buen trabajao esta funcion que nos servira para utilizar en nuevos macros, y tambien la reduccion de la macro realizada por Harumi Hasegawa.

  4. Hola amigos

    No sé cómo ajustar una macro de Excel y necesito su ayuda por favor.

    He seleccionado algunas celdas de la columna B (rango variable) y quiero pegar un dato en las mismas filas pero de la columna D, sé que es sencillo pero no logro ajustar el código para que funcione.

    Muchas gracias!!!

    • ActiveCell.Offset(0,2).Value=Tu valor

  5. y si pongo ActiveCell.Offset(2, 0).Resize(1, 1) que me va a hacer la macro

  6. consulta:
    como hago para copiar la cantidad, la descripción y el precio de la factura pero obviando las filas en blanco...
    lo que pasa es que a veces colocan un texto en la descripcion que no tiene ni cantidad ni precio:

    cant descripcion precio
    documento de evaluacion 00510
    2 llantas reencauchadas 15.00
    dfx15 gmn (serie)
    dfx15 mzt (serie)

  7. el código que necesito no esta aquí, serian tan amables de ayudarme. El problema es el siguiente: el código que tengo guarda datos en el libro diario, pero me gustaría que al inicio de cada partida me aparezca así "------------------Partida No. " & lblAsiento.Caption. Ej:

    ------------------partida No. 1------------------
    caja
    bancos

    ------------------partida No. 2------------------
    caja
    bancos
    capital

  8. Favor, necesito me puedas ayudar con rutina que haga lo siguiente:
    1º Tengo una base de datos de la A1:L1500

    A B C D E
    1 Cod Nombre Rut Labor Fecha Nac
    2 11641 Migue Salva 15123456-1 jornal 05/05/2001
    3 12565

    2º Al mover el cursor desde la columan a1:a1500, tanto con el teclado o el mouse, me arroje los datos de la ubicación que se encuentre el cursor a?, b?, c?, d? y e?, a las celdas g1,g2,g3,g4 y g5.

    Eje
    A B C D E F G
    1 11641
    2 Miguel Salva
    3 15123456-1
    4 Jornal
    5 05/05/2001

    esperando me puedas ayudar,

    se despide atte,

    Miguel Salvadó.

  9. al ingresar esta linea de codigo : ActiveCell.Offset(0, 6) = telefono donde telefono contiene "0441234567890" al ingresarlo en la celda solo me imprime 441234567890 pero me quita el cero inicial, alguien sabe que pueda ser?

    • El formato de la columna teléfono es numérico y lo ceros a la izquierda no son valores a tener en cuenta. Has de poner formato o hacer la columna texto

    • Eso tiene que ver con el tipo de dato de la celda, si lo defines como número siempre te va a borrar el 0 pues el 0 a la izquierda en no vale nada, define la celdas como texto. Así el tomará todo como si fueran cráteres.

    • Cambiale el formato de la celda a texto o multiplica el valor *1,

  10. Gracias me ha ayudado muchísimo!

    SAlu2

  11. Buenas tengo un formulario para ingresar datos a una hoja pero quiero que antes de pegar los datos a través de .end(xldown) encuentre la siguiente fila vacía y así sucesivamente.

    • Usualmente se determina la última fila en uso, sabiendo ello la siguiente fila será la que se encuentre libre.

      Dale una mirada a
      https://www.excel-avanzado.com/2791/identificar-la-ultima-fila-en-uso-con-vba.html

  12. Hola, es posible hacer que, programo un boton dentro de un formulario y me aparezca un msjbox que diga que verifique los datos que ingreso en el formulario, y que dentro del mismo msjbox salga todo lo que escribi en el formulario, para que la persona lo lea y confiem si es que los datos ingresados estan correcto??????????
    muchas gracias

  13. BUENAS NOCHES
    Dentro de un rango seleccionado sobre el cual estoy buscando un valor con:
    For Each Celda in Selection. al momento de encontrar el valor elimina la fila, pero el foco de la celda se queda en la columna donde encontró el valor buscado.
    ¿Hay algun comando para que reinicie a buscar en la misma fila pero en la columna "x"?
    Esto es porque al momento de eliminar la fila la variable estaba en la columna "J" y la siguiente variable está en la columna "B" y al momento de eliminar la fila el foco de la variable Celda se encuentra en la columna "J" y contínua buscando apartir de la columna "K".
    Espero haberme explicado.

    Gracias por su ayuda

  14. Estoy trabajando en un formulario con esta opción "ActiveCell.Offset" pero la información que le ingreso al formulario siempre me la copia en la misma fila de la hoja de trabajo y necesito es que se almacene en las diferentes filas hacia abajo que debo hacer?

  15. Hola. ¿Cómo se haría para limitar el número de filas en las que puede ir bajando el comando ActiveCell.Offset(1, 0).Select? Me gustaría que al llegar a determinada celda, no dejar añadir más. Gracias.

  16. Buenas tardes disculpe me puede ayudar que hace esta función ActivaCell.Offset(0,1) =ActivaCell.Offset (0,1)+1

  17. tengo la siguiente sintaxis y marca error Range("A" & Cells.Rows.Count).End (x1Up) .Offset (1).Select que le falta

  18. Como inserto la función AÑO en la celda K1 con base en el primer registro que encuentre en la columna H utilizando End(xlDown) o ActiveCell.end? Agradezco la información que me puedan brindar.

  19. Buenas, tengo una hoja con datos en muchas columnas, y estoy intentando hacer, que si estoy en una celda, mediante un botón se desplace el puntero a una celda determinada (que se establezca) de la misma fila. Gracias

  20. Tengo un libro en Excel con 4 hojas con diferente información en cada una, la hoja 1 es un modulo de consulta de la información que tengo en las otras 3 hojas del libro y cuento con 3 botones (Anterior, Siguiente, ir al registro). me podrían apoyar con que macro puede hacer que hagan la función cada botón?... la idea es que desde la hoja 1 los mismos botones hagan su función correcta.

Página de comentarios 1 de 2
1 2

Deja una respuesta

Los campos requeridos estan marcados con *.