Hacer referencia a una celda en una hoja de cálculo de Excel desde el código VBA por dirección, índice y nombre. Leer información de una celda. Borrar un valor de celda. El método ClearContents del objeto Range.
Acceder a una celda por dirección
Digamos que tenemos dos archivos abiertos: «Libro1» y «Libro2», y el archivo «Libro1» está activo y contiene código VBA ejecutable.
En el caso general, al acceder a la celda de un libro inactivo “Libro2”, la ruta completa se escribe a partir del código del archivo “Libro1”:
Workbooks("Libro2.xlsm").Sheets("Hoja2").Range("C5") Workbooks("Libro2.xlsm").Sheets("Hoja2").Cells(5, 3) Workbooks("Libro2.xlsm").Sheets("Hoja2").Cells(5, "C") Workbooks("Libro2.xlsm").Sheets("Hoja2").[C5]
Es más conveniente acceder a una celda a través de la propiedad de la hoja de cálculo Celdas (número de fila, número de columna), ya que puede usar variables en lugar de números de fila y columna. Tenga en cuenta que al acceder a cualquier libro de trabajo, debe estar abierto; de lo contrario, se producirá un error. Se debe abrir un libro cerrado antes de acceder a él.
Ahora supongamos que en el libro activo «Libro1», «Hoja1» y la celda «A1» están activas. Entonces el acceso a la celda “A1” se puede escribir de la siguiente manera:
ActiveCell Range("A1") Cells(1, 1) Cells(1, "A") [A1]
De igual forma puedes acceder a otras celdas de la hoja de trabajo activa, excepto acceder a ActiveCell, ya que solo una celda puede estar activa, en nuestro ejemplo es la celda “A1”.
Si estamos accediendo a una celda de una hoja inactiva del libro activo, entonces debemos especificar esa hoja:
'por nombre base de hoja Hoja2.Cells(2, 7) 'por nombre de acceso directo Sheets("Nombre del acceso directo").Cells(3, 8)
El nombre del acceso directo puede ser el mismo que el nombre principal de la hoja. Puede ver estos nombres en la ventana del editor de VBA en el explorador de proyectos. Sin corchetes se muestra el nombre principal de la hoja, entre paréntesis se muestra el nombre del acceso directo.
Hacer referencia a una celda por índice
Se puede acceder a una celda de una hoja de cálculo mediante su índice (número ordinal), que se calcula según la ubicación de la celda en la hoja de izquierda a derecha y de arriba a abajo.
Por ejemplo, el índice de las celdas de la primera fila es igual al número de columna. El índice de las celdas de la segunda fila es igual al número de celdas de la primera fila (que es igual al número total de columnas de la hoja de cálculo, según la versión de Excel) más el número de columna. El índice de las celdas de la tercera fila es igual al número de celdas de las dos primeras filas más el número de columna. Etcétera.
Por ejemplo, Celdas(4) es la misma celda que Celdas(1, 4). Esta designación rara vez se utiliza, especialmente porque diferentes versiones de Excel pueden tener diferentes números de columnas y filas en una hoja de cálculo.
Por índice, puede acceder a una celda no solo en toda la hoja de trabajo, sino también en un rango separado. Las celdas se numeran dentro de un rango determinado según la misma regla: de izquierda a derecha y de arriba a abajo. Aquí están los índices de celda de Range(«A1:C3»):
Llamar a la celda Range("A1:C3").Cells(5)
corresponde a la expresión Range("B2")
.
Hacer referencia a una celda por su nombre
Si a una celda en una hoja de cálculo de Excel se le ha asignado un nombre (Fórmulas -> Asignar un nombre), puede hacer referencia a ella por el nombre asignado.
Digamos que a una de las celdas se le asigna el nombre «Total», luego puede acceder a ella: Range("Total")
.
Escribir información en una celda
El contenido de una celda está determinado por su propiedad «Value», que en VBA Excel es una propiedad predeterminada y no se puede especificar explícitamente. La información se escribe en una celda usando el operador de asignación “=»:
Cells(2, 4).Value = 15 Cells(2, 4) = 15 Range("A1") = "Escribimos este texto en la celda." ActiveCell = 28 + 10*36
Puede utilizar variables junto con números y texto. Los ejemplos aquí y a continuación son para la hoja activa. Para hojas inactivas, debe especificar adicionalmente el nombre de la hoja, como en la sección «Acceso a una celda».
Leer información de una celda de Excel
También puedes leer información de una celda en una variable usando el operador de asignación “=»:
Sub Test() Dim a1 As Integer, a2 As Integer, a3 As Integer Range("A3") = 6 Cells(2, 5) = 15 a1 = Range("A3") a2 = Cells(2, 5) a3 = a1 * a2 MsgBox a3 End Sub
Puedes intercambiar información entre celdas de la misma forma:
Cells(2, 2) = Range("A4")
Borrar un valor de celda
La celda se borra de su valor mediante el método ClearContents. También puedes establecer una celda en cero, la cadena vacía o Empty:
Cells(10, 2).ClearContents Range("D23") = 0 ActiveCell = "" Cells(5, "D") = Empty