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
05/08/2012 a las 10:10 pm
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
30/11/2012 a las 12:05 pm
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.
10/02/2013 a las 9:45 pm
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.
22/07/2013 a las 6:59 pm
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!!!
02/07/2014 a las 6:17 am
ActiveCell.Offset(0,2).Value=Tu valor
22/07/2014 a las 4:43 pm
y si pongo ActiveCell.Offset(2, 0).Resize(1, 1) que me va a hacer la macro
18/12/2014 a las 6:05 pm
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)
29/05/2015 a las 10:21 am
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
04/06/2015 a las 9:06 am
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ó.
01/09/2015 a las 7:54 pm
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?
19/09/2015 a las 7:39 am
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
30/04/2017 a las 9:07 am
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.
20/11/2017 a las 8:56 am
Cambiale el formato de la celda a texto o multiplica el valor *1,
31/01/2016 a las 10:38 pm
Gracias me ha ayudado muchísimo!
SAlu2
22/05/2016 a las 3:59 pm
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.
01/07/2016 a las 3:51 pm
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
06/07/2016 a las 2:33 pm
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
20/02/2017 a las 7:29 pm
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
21/11/2017 a las 8:19 pm
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/12/2017 a las 5:49 am
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.
18/03/2018 a las 12:42 pm
Buenas tardes disculpe me puede ayudar que hace esta función ActivaCell.Offset(0,1) =ActivaCell.Offset (0,1)+1
21/05/2018 a las 11:27 am
tengo la siguiente sintaxis y marca error Range("A" & Cells.Rows.Count).End (x1Up) .Offset (1).Select que le falta
22/08/2018 a las 2:38 pm
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.
14/12/2018 a las 2:52 am
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
14/02/2019 a las 11:57 pm
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.