VBA – Activecell Offset
In this Article
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.
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:
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:
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.
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.