VBA – Activecell Offset

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on abril 6, 2022

Este tutorial demostrará cómo utilizar el Desplazamiento de la Celda Activa en VBA.

ActiveCell es una propiedad de VBA que representa la dirección de la celda activa en su hoja de trabajo. Si el cursor está posicionado en la celda A1 entonces la propiedad ActiveCell en VBA devolverá la dirección de la celda «A1». Hay un número de propiedades y métodos que están conectados a la ActiveCell. En este artículo nos concentraremos en el método ActiveCell.Offset.

Propiedades y métodos de ActiveCell.Offset

Activecell.Offset tiene un número de propiedades y métodos disponibles para ser programados con VBA. Para ver las propiedades y métodos disponibles, escriba la siguiente sentencia en un procedimiento como se muestra a continuación, y pulse la tecla punto en el teclado para ver una lista desplegable.

ActiveCell Offset

Los métodos se representan con el icono verde de método, y las propiedades con el icono de la mano pequeña. Las propiedades y métodos del método ActiveCell.Offset son los mismos que los del método ActiveCell.

Sintaxis de ActiveCell.Offset

La sintaxis de ActiveCell.Offset es la siguiente:

ActiveCell sintaxis

 

donde RowOffset y ColumnOffset es el número de filas a desplazar (números positivos para abajo, números negativos para arriba) o el número de columnas que desea desplazar (números positivos desplazan a la derecha, números negativos a la izquierda).

Activecell.Offset..Select

El método Activecell.Offset..Select es el más utilizado para con el método Activecell.Offset. Le permite desplazarse a otra celda de la hoja de cálculo. Puede utilizar este método para moverse a través de las columnas, o para subir o bajar filas en su hoja de trabajo. Para bajar una fila, pero permanecer en la misma columna:

ActiveCell.Offset(1, 0).Select

Para moverse a través de una columna, pero permanecer en la misma fila:

ActiveCell.Offset(0, 1).Select

Para moverse hacia abajo en una fila, y a través de una columna:

ActiveCell.Offset(1, 1).Select

Para subir una fila:

Activecell.Offset(-1,0).Select

Para mover a la izquierda una columna:

ActiveCell.Offset(0, -1).Select

En el procedimiento siguiente, estamos recorriendo un rango de celdas y moviéndonos hacia abajo una fila, y a través de una columna mientras hacemos el bucle:

Sub ActiveCellTest()
  Dim x As Integer
  Range("A1").Select
  For x = 1 To 10
    ActiveCell = x
    ActiveCell.Offset(1, 1).Select
  Next x
End Sub

El resultado se muestra en el siguiente gráfico:

ActiveCell test

El bucle pone el valor de i (1-10) en la celda activa, y luego utiliza la propiedad Activecell.Offset para moverse hacia abajo una fila, y a través de una columna a la derecha – repitiendo este bucle 10 veces.

Usando el Objeto Rango con la Selección de Desplazamiento de la Celda Activa

Usar el Objeto Range  con la celda activa puede a veces confundir a algunas personas. Considere el siguiente procedimiento:

Sub ActiveCellOffsetRango()
  Range("B1: B10").Select
  ActiveCell.Offset(1, 1).Range("A1").Select
End Sub

Con el ActiveCell.Offset(1,1.Range(«A1»), se ha especificado el Range(«A1»). Sin embargo, esto no significa que la celda A1 de la hoja será seleccionada. Como hemos especificado el Rango(«B1:B10»), la celda A1 en ese rango es en realidad la celda B1 en el libro de trabajo. Por lo tanto, la celda se desplazará 1 fila y 1 columna desde la celda B1 NO desde la celda A1.

VBA ActiveCell Offset Range

Por lo tanto, el Range(«A1′) en este caso no es necesario ya que la macro funcionará de la misma manera con él o sin él.

Alternativas a ActiveCell

En lugar de utilizar Activecell con el método Offset, también podemos utilizar el objeto Range con el método Offset.

Sub RangeOffset()
   Range("B1").Offset(0, 1).Select
End Sub

El procedimiento anterior seleccionaría la celda C1 de la hoja de cálculo.

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples