Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

Utilidad del offset

| 15 Comments

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:

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

15 Comments

  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!!!

  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

  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
      http://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

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5