Vous êtes sur la page 1sur 37

Libro VBA Excel:

http://www.scribd.com/doc/6869916/Apunte-de-Excel-con-VBA
Propiedad Address
Vea también Se aplica a Ejemplo Específicos

Propiedad Address tal como se aplica al objeto Hyperlink.

Devuelve o establece la dirección del documento de destino. String de Lectura/Escritura.

expresión.Address

expresión requerida. Expresión que devuelve uno de los objetos arriba mencionados.

Propiedad Address tal como se aplica al objeto Range.

Devuelve la referencia del rango en el lenguaje de la macro. String de sólo lectura.

expresión.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)

expresión requerida. Expresión que devuelve uno de los objetos arriba mencionados.

RowAbsolute Variant opcional. True para que se devuelva la parte de fila de la referencia en
forma de referencia absoluta. El valor predeterminado es True.

ColumnAbsolute Variant opcional. True para que se devuelva la parte de columna de la


referencia en forma de referencia absoluta. El valor predeterminado es True.

ReferenceStyle XlReferenceStyle opcional.

XlReferenceStyle puede ser una de estas constantes XlReferenceStyle.


xlA1 valor predeterminado. Utilice xlA1 para devolver una referencia con estilo A1.
xlR1C1. Utilice xlR1C1 para devolver una referencia con estilo L1C1.

External Variant opcional. True para que se devuelva una referencia externa. False para que se
devuelva una referencia local. El valor predeterminado es False.

RelativeTo Variant opcional. Si RowAbsolute y ColumnAbsolute tienen el valor False y


ReferenceStyle es xlR1C1, deberá incluir un punto inicial para la referencia relativa. Este
argumento es un objeto Range que define el punto inicial.

Comentarios
Si la referencia contiene más de una celda, se aplicarán RowAbsolute y ColumnAbsolute a todas
las filas y columnas.

Ejemplo
El ejemplo siguiente muestra cuatro representaciones distintas de la misma dirección de celda en
Sheet1. Los comentarios del ejemplo son las direcciones que se mostrarán en los cuadros de
mensaje.

Set mc = Worksheets("Sheet1").Cells(1, 1)
MsgBox mc.Address()                              ' $A$1
MsgBox mc.Address(RowAbsolute:=False)            ' $A1
MsgBox mc.Address(ReferenceStyle:=xlR1C1)        ' R1C1
MsgBox mc.Address(ReferenceStyle:=xlR1C1, _
    RowAbsolute:=False,     _
    ColumnAbsolute:=False, _
    RelativeTo:=Worksheets(1).Cells(3, 3))        ' R[-2]C[-2]
buscamos: 3 1

Resultado1: 3 2
Resultado2: $F$5 5
4
3
6
7
8
9
0
3
$D$8
Hay dos formas de copiar y pegar celdas:

a) Ir a la hoja, seleccionar la celda, copiar la celda para luego pegarla en la


celda correspondiente.
Sheets("MiniIbex").Select
Range("C5").Select
Selection.Copy
Sheets("outputdata").Select
Range("D6").Select
ActiveSheet.Paste

b) Ir a una celda, cargar el valor en una variable “Rango” y luego pegarlo


donde y como queramos.
Dim Fecha As Range
Sheets("MiniIbex").Select
Range("C5").Select
Set Fecha = ActiveCell.Cells
Range("D6").Select
ActiveCell.FormulaR1C1 = Fecha
End Sub

c) Támbien tenemos la posibilidad de pegar el rango.

Dim Fecha As Range


Sheets("MiniIbex").Select
Range("C5").Select
Set Fecha = ActiveCell.Cells
Range("D6").Select
ActiveCell.FormulaR1C1 = Fecha.Address()
End Sub
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/listadodecodigosvisualbasic.htm

Código fuente en el formulario

1. Option Explicit
2.
3. ' Importante : Agregar la referencia a Micorosft Excel xx object library
4. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
5.
6. Private Sub Form_Load()
7.
8.
9. 'Variable de tipo Aplicación de Excel
10. Dim objExcel As Excel.Application
11.
12. 'Una variable de tipo Libro de Excel
13. Dim xLibro As Excel.Workbook
14. Dim Col As Integer, Fila As Integer
15.
16. 'creamos un nuevo objeto excel
17. Set objExcel = New Excel.Application
18.
19. 'Usamos el método open para abrir el archivo que está _
20. en el directorio del programa llamado archivo.xls
21. Set xLibro = objExcel.Workbooks.Open(App.Path + "\archivo.xls")
22.
23. 'Hacemos el Excel Visible
24. objExcel.Visible = True
25.
26. With xLibro
27.
28. ' Hacemos referencia a la Hoja
29. With .Sheets(1)
30.
31. 'Recorremos la fila desde la 1 hasta la 7
32. For Fila = 1 To 7
33.
34. 'Agregamos el valor de la fila que _
35. corresponde a la columna 2
36. Combo1.AddItem .Cells(Fila, 2)
37. Next
38.
39. End With
40. End With
41.
42. 'Eliminamos los objetos si ya no los usamos
43. Set objExcel = Nothing
44. Set xLibro = Nothing
45.
46. End Sub
mirar 27
http://support.microsoft.com/kb/291308/es

Método
Activate
Cells
Application.Goto
Offset

Range
Resize
Select
Sheets
Workbooks
End
CurrentRegion
En los ejemplos de este artículo se usan las propiedades de tabla siguiente.
Contraer esta tablaAmpliar esta tabla
Propiedad
ActiveSheet
ActiveWorkbook

Columns.Count

Rows.Count

Selection
Volver al principio

1: seleccionar una celda en la hoja de cálculo activa

Para seleccionar la celda D5 en la hoja de cálculo activa puede utilizar cualquiera de los ejemplos
siguientes:

ActiveSheet.Cells(5, 4).Select

O bien

ActiveSheet.Range("D5").Select

Volver al principio

2: seleccionar una celda en otra hoja de cálculo del mismo libro


Para seleccionar la celda E6 en otra hoja de cálculo del mismo libro, puede utilizar cualquiera de
los ejemplos siguientes:

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)

O bien

Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

O bien, puede activar la hoja y usar el método 1 anterior para seleccionar la celda:

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

Volver al principio

3: seleccionar una celda en una hoja de cálculo de un libro diferente

Para seleccionar la celda F7 en una hoja de cálculo de un libro diferente, puede utilizar cualquiera
de los ejemplos siguientes:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)

O bien

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

O bien, puede activar la hoja y usar el método 1 anterior para seleccionar la celda:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

Volver al principio

4: seleccionar un rango de celdas en la hoja de cálculo activa

Para seleccionar el rango C2:D10 en la hoja de cálculo activa puede utilizar cualquiera de los
ejemplos siguientes:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select

ActiveSheet.Range("C2:D10").Select

ActiveSheet.Range("C2", "D10").Select

Volver al principio

5: seleccionar un rango de celdas en otra hoja de cálculo del mismo


libro

Para seleccionar el rango D3:E11 de otra hoja de cálculo del mismo libro, puede utilizar cualquiera
de los ejemplos siguientes:

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

O bien, puede activar la hoja y usar el método 4 anterior para seleccionar el rango:

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

Volver al principio

6: seleccionar un rango de celdas en una hoja de cálculo de un libro


diferente

Para seleccionar el rango E4:F12 de una hoja de cálculo en un libro diferente, puede utilizar
cualquiera de los ejemplos siguientes:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")

Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

O bien, puede activar la hoja y usar el método 4 anterior para seleccionar el rango:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

Volver al principio

7: seleccionar un rango con nombre en la hoja de cálculo activa

Para seleccionar el rango con nombre "Test" de la hoja de cálculo activa puede utilizar cualquiera
de los ejemplos siguientes:

Range("Test").Select

Application.Goto "Test"

Volver al principio

8: seleccionar un rango con nombre en otra hoja de cálculo del


mismo libro

Para seleccionar el rango con nombre "Test" de otra hoja de cálculo del mismo libro, puede utilizar
cualquiera de los ejemplos siguientes:

Application.Goto Sheets("Sheet1").Range("Test")

O bien, puede activar la hoja y usar el método 7 anterior para seleccionar el rango con nombre:

Sheets("Sheet1").Activate
Range("Test").Select

Volver al principio

9: seleccionar un rango con nombre en una hoja de cálculo de un


libro diferente

Para seleccionar el rango con nombre "Test" de una hoja de cálculo de un libro diferente, puede
utilizar cualquiera de los ejemplos siguientes:

Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
O bien, puede activar la hoja y usar el método 7 anterior para seleccionar el rango con nombre:

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

Volver al principio

10: seleccionar una celda relativa a la celda activa

Para seleccionar una celda que se encuentra cinco filas más abajo y cuatro columnas a la izquierda
de la celda activa, puede utilizar el ejemplo siguiente:

ActiveCell.Offset(5, -4).Select

Para seleccionar una celda que se encuentra dos filas más arriba y tres columnas a la derecha de
la celda activa, puede utilizar el ejemplo siguiente:

ActiveCell.Offset(-2, 3).Select

Nota: se producirá un error si intenta seleccionar una celda que esté "fuera de la hoja". El primer
ejemplo anterior devolverá un error si la celda activa se encuentra entre en las columnas A a D, ya
que si se mueve cuatro columnas a la izquierda, la celda activa se desplazaría a una dirección de
celda no válida.

Volver al principio

11: seleccionar una celda relativa a otra celda (distinta de la activa)

Para seleccionar una celda que se encuentra cinco filas más abajo y cuatro columnas a la izquierda
de la celda C7, puede utilizar los ejemplos siguientes:

ActiveSheet.Cells(7, 3).Offset(5, 4).Select

ActiveSheet.Range("C7").Offset(5, 4).Select

Volver al principio
12: seleccionar un rango de celdas separadas por un rango
específico

Para seleccionar un rango de celdas que sea del mismo tamaño que el rango con nombre "Prueba"
pero que estén desplazadas cuatro filas más abajo y tres columnas a la derecha, puede utilizar el
ejemplo siguiente:

ActiveSheet.Range("Test").Offset(4, 3).Select

Si el rango con nombre está en otra hoja (que no sea la activa), active primero esa hoja y, a
continuación, seleccione el rango con el ejemplo siguiente:

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

Volver al principio

13: seleccionar un rango especificado y cambiar el tamaño de la


selección

Para seleccionar el rango con nombre "Base de datos" y, a continuación, extender la selección
cinco filas, puede utilizar el ejemplo siguiente:

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select

Volver al principio

14: seleccionar un rango especificado, desplazarlo y cambiar su


tamaño

Para seleccionar un rango cuatro filas más abajo y tres columnas a la derecha del rango con
nombre "Base de datos" e incluir dos filas y una columna más que el rango con nombre, puede
utilizar el ejemplo siguiente:

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select

Volver al principio
15: Seleccionar la unión de dos o más rangos especificados

Para seleccionar la unión (es decir, el área combinada) de los dos rangos con nombre "Prueba" y
"Ejemplo", puede utilizar el ejemplo siguiente:

Application.Union(Range("Test"), Range("Sample")).Select

Tenga en cuenta que ambos rangos deben estar en la misma hoja para que este ejemplo funcione.
Observe también que el método Union no funciona entre diferentes hojas. Por ejemplo, esta línea
funciona correctamente

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

pero esta línea

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

devuelve el mensaje de error:


Error en la clase de aplicación del método Union
Volver al principio

16: seleccionar la intersección de dos o más rangos especificados

Para seleccionar la intersección de los dos rangos con nombre "Prueba" y "Ejemplo", puede utilizar
el ejemplo siguiente:

Application.Intersect(Range("Test"), Range("Sample")).Select

Tenga en cuenta que ambos rangos deben estar en la misma hoja para que este ejemplo funcione.

Los ejemplos 17 a 21 de este artículo hacen referencia al siguiente conjunto de datos de ejemplo.
En cada ejemplo se especifica el rango de celdas de los datos del ejemplo que se seleccionarían.

A1: Nombre B1: Ventas C1: Cantidad


A2: a B2: $10 C2: 5
A3: b B3: C3: 10
A4: c B4: $10 C4: 5
A5: B5: C5:
R6: Total B6: $20 C6: 20

Volver al principio

17: seleccionar la última celda de una columna de datos contiguos


Para seleccionar la última celda de una columna contigua, utilice el ejemplo siguiente:

ActiveSheet.Range("a1").End(xlDown).Select

Cuando este código se utilice con la tabla de ejemplo, se seleccionará la celda A4.

Volver al principio

18: seleccionar la celda en blanco en la parte inferior de una


columna de datos contiguos
Para seleccionar la celda debajo de un rango de celdas contiguas, utilice el ejemplo siguiente:

ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select

Cuando este código se utilice con la tabla de ejemplo, se seleccionará la celda A5

Volver al principio

19: seleccionar un rango completo de celdas contiguas en una


columna

Para seleccionar un rango de celdas contiguas en una columna, utilice uno de los ejemplos
siguientes:

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select

O bien

ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _


End(xlDown).Address).Select

Cuando este código se utilice con la tabla de ejemplo, se seleccionarán las celdas A1 a A4.
Volver al principio

20: seleccionar un rango completo de celdas que no sean contiguas


en una columna

Para seleccionar un rango de celdas que no sean contiguas, utilice uno de los ejemplos siguientes:

ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select

O bien

ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _


End(xlUp).Address).Select

Cuando este código se utilice con la tabla de ejemplo, se seleccionarán las celdas A1 a A6.

Volver al principio

21: seleccionar un rango rectangular de celdas

Para seleccionar un rango de celdas rectangular alrededor de una celda, utilice el método
CurrentRegion. El rango seleccionado mediante el método CurrentRegion es un área limitada por
cualquier combinación de filas en blanco y columnas vacías. A continuación se muestra un ejemplo
de cómo utilizar el método CurrentRegion:

ActiveSheet.Range("a1").CurrentRegion.Select

Este código seleccionará las celdas A1 a C4. A continuación se muestran otros ejemplos para
seleccionar el mismo rango de celdas:

ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select

O bien

ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
En algunos casos, puede que prefiera 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
seleccionarán todas las celdas:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

O bien

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select

Volver al principio

22. Seleccionar varias columnas no contiguas de longitud variable

Para seleccionar varias columnas no contiguas de longitud variable, utilice la tabla de ejemplo
siguiente y el ejemplo de macro:

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:
R6: 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 este código se utilice con la tabla de ejemplo, se seleccionarán las celdas A1:A3 y C1:C6.
Volver al principio
NOTAS SOBRE LOS EJEMPLOS

Normalmente se puede omitir la propiedad ActiveSheet, ya que se considera implícita si una hoja
concreta no tiene nombre. Por ejemplo, en lugar de escribir

ActiveSheet.Range("D5").Select

puede utilizar:

Range("D5").Select

Generalmente también se puede omitir la propiedad ActiveWorkbook. A menos que se nombre un


libro concreto, el libro activo se considera implícito.
Cuando use el método Application.Goto, si desea utilizar dos métodos Cells dentro del método
Range cuando el rango especificado esté en otra hoja (no en la activa), debe incluir el objeto
Sheets cada vez. Por ejemplo:

Application.Goto Sheets("Sheet1").Range( _
Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
Sheets("Sheet1").Cells(4, 5)))

Para cualquier elemento entre comillas (por ejemplo, el rango con nombre "Prueba"), también
puede utilizar una variable cuyo valor sea una cadena de texto. Por ejemplo, en lugar de escribir

ActiveWorkbook.Sheets("Sheet1").Activate

puede utilizar

ActiveWorkbook.Sheets(myVar).Activate

donde el valor de myVar es "Sheet1".


Argumentos
ninguno
rowIndex, columnIndex
reference, scroll
rowOffset, columnOffset
cell1
cell1, cell2
rowSize, columnSize
ninguno
index (o sheetName)
index (o bookName)
direction
ninguno

Uso
especificar la hoja activa
especificar el libro activo
contar el número de
columnas en el elemento
especificado
contar el número de filas
en el elemento
especificado
referirse al rango
seleccionado en este
momento
Celda a Celda mediante una función -->
Dim Ibex As String
Ibex = "MINI IBEX"
ActiveCell.FormulaR1C1 = Ibex
Pegar en un rango-->
Sheets("MiniIbex").Select
Range("B4").Select
Selection.Copy
Range(RangoIbexFinal & ":" & RangoIbex2Final).Select
o
Range("B1:B4").Select
ActiveSheet.Paste
Ejercicio de Pegar en un rango variable -->
' Copiamos el nombre de al acción.
Sheets("MiniIbex").Select
Range("B4").Select
Selection.Copy
Sheets("outputdata").Select
Range("B2").Select
'El rango donde vamos a pegar:
' Busca en la columna C el valor "Opcion".
Columns("C:C").Select
Selection.Find(What:="Opcion", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
' Selecciona la una celda mas abajo.
ActiveCell.Offset(1, 0).Select
Dim RangoIbex As Range
Rango1
Set RangoIbex = ActiveCell.Cells
Dim RangoIbexFinal As String
RangoIbexFinal = RangoIbex.Address(RowAbsolute:=False, ColumnAbsolute:=False)
' Busca la primera celda en blanco de la columna "K":
ActiveSheet.Range("K7").End(xlDown).Offset(1, 0).Select Rango2
' Selecciona una celda mas arriba y en la columna "C":
ActiveCell.Offset(-1, -8).Select
Dim RangoIbex2 As Range
Set RangoIbex2 = ActiveCell.Cells
Dim RangoIbex2Final As String
RangoIbex2Final = RangoIbex2.Address(RowAbsolute:=False, ColumnAbsolute:=False)
' Seleccionamos el rango y pegamos el valor "MINI IBEX":
Range(RangoIbexFinal & ":" & RangoIbex2Final).Select
ActiveSheet.Paste
Sub Macro20()
On Error GoTo Tratar_Errores
Sheets("Aegon").Select
Columns("B:B").Select
Selection.Find(What:="CALL", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Si esto da error, pasara a
ActiveCell.Offset(3, 1).Select la línea Tratar_Errores
Exit Sub
Tratar_Errores:
Si queremos que muestre el error ponemos MsgBox ("El error es "& Err.Number & Err.Description)
Sheets("Abertis").Select
Range("B4").Select
End Sub
Err.Description)

Vous aimerez peut-être aussi