Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una de las cosas que más útil resulta pero de la que he encontrado muy
poca información es de cómo hacer referencias a celdas o rangos en
VBA. Hay muchísimas maneras y cada una tiene su utilidad.
Este post puede servirte para cuando grabes una macro poder
modificarla a tu antojo con muy pocos cambios.
Range("B7")
Cells(7 , 2)
Cells(iFila , 2)
4. Usando variables tanto para fila como para columna. Ahora la variable
columna será «iColumna«.
Cells(iFila ,iColumna)
Range("B7:C9")
Range(Cells(7 ,2),Cells(9,3))
7. Usando la variable iRow para la última fila del rango (en ocasiones no
la conoceremos o será dinámica). Hay dos posibles maneras:
Range ("B7:C"&iFila)
Cells( 1 , «A»)
Referida a la celda A1
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Cómo seleccionar un rango de celdas en la hoja
de cálculo activa
Para seleccionar el rango C2: D10 de la hoja de cálculo activa, puede usar
cualquiera de los siguientes ejemplos:
or
Range("Test").Select
ActiveCell.Offset(5, -4).Select
Para seleccionar una celda que está dos filas por encima y tres columnas a la
derecha de la celda activa, puede usar el siguiente ejemplo:
ActiveCell.Offset(-2, 3).Select
ActiveSheet.Range("Test").Offset(4, 3).Select
Si el rango con nombre está en otra hoja de cálculo (no en la activa), Active
primero esa hoja de cálculo y, a continuación, seleccione el rango mediante el
siguiente ejemplo:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2,
_
Selection.Columns.Count + 1).Select
Application.Union(Range("Test"),
Range("Sample")).Select
Nota
para que este ejemplo funcione, ambos intervalos deben estar en la misma hoja
de cálculo. Tenga en cuenta también que el método Union no funciona en las
distintas hojas. Por ejemplo, esta línea funciona correctamente.
Set y = Application.Union(Range("Sheet1!A1:B2"),
Range("Sheet1!C3:D4"))
Set y = Application.Union(Range("Sheet1!A1:B2"),
Range("Sheet2!C3:D4"))
ActiveSheet.Range("a1").End(xlDown).Select
Cuando se utiliza este código con la tabla de ejemplo, se selecciona la celda A4.
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).
Select
Cuando se usa este código con la tabla de ejemplo, se selecciona la celda A5.
ActiveSheet.Range("a1",
ActiveSheet.Range("a1").End(xlDown)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Cuando se utiliza este código con la tabla de ejemplo, se seleccionan las celdas
a1 a A4.
ActiveSheet.Range("a1",ActiveSheet.Range("a" &
ActiveSheet.Rows.Count).End(xlUp)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
End(xlUp).Address).Select
Cuando se usa este código con la tabla de ejemplo, se seleccionan las celdas a1
a A6.
ActiveSheet.Range("a1").CurrentRegion.Select
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
-or-
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
En algunos casos, es posible que desee seleccionar las celdas a1 a C6. En este
ejemplo, el método CurrentRegion no funcionará debido a la línea en blanco de
la fila 5. En los ejemplos siguientes se seleccionan todas las celdas:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
-or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select
asciidocCopiar
A1: 1 B1: 1 C1: 1 D1: 1
A2: 2 B2: 2 C2: 2 D2: 2
A3: 3 B3: 3 C3: 3 D3: 3
A4: B4: 4 C4: 4 D4: 4
A5: B5: 5 C5: 5 D5:
A6: B6: C6: 6 D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
Cuando se usa este código con la tabla de ejemplo, se seleccionan las celdas a1:
a3 y C1: C6.