Professional Documents
Culture Documents
Pgina 1
El nmero que observas dentro de los parntesis indica el ndice del objeto Workbook dentro
de la coleccin de objetos Workbooks. De manera predeterminada el ndice 1 ser para el
libro de Excel que contiene el cdigo VBA y a partir de ah la numeracin ser de acuerdo al
orden en que hayamos abierto otros archivos.
Si conocemos el nombre del libro podemos utilizarlo en lugar del ndice y tener una instruccin
como la siguiente:
Application.Workbooks("Libro1.xlsx").Activate
La coleccin de objetos Workbooks nos permitir acceder a todos los libros que hayamos
abierto dentro de nuestra aplicacin VBA.
Esta instruccin accede a la hoja con el ndice 1 y coloca el valor Hola Mundo en la celda
A1. Tambin podemos acceder a una hoja a travs de su nombre en caso de que lo
conozcamos:
Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola"
Pgina 2
Ahora ya sabemos que VBA tiene un objeto para representar los libros de Excel (Workbook) y
otro objeto para representar las hojas de un libro (Worksheet). Ambos tipos de objetos son
almacenados dentro de colecciones de objetos que son conocidas como Workbooks, que se
refiere a la coleccin de libros que se han abierto y Worksheets que es la coleccin de hojas
que pertenecen a un determinado libro.
Range :
A un conjunto de celdas.
Este ejemplo usa un cuadro de mensaje para mostrar el valor de la celda activa. Puesto que la propiedad
ActiveCell falla si la hoja no es una hoja de clculo, el ejemplo activara la Hoja1 antes de utilizar la propiedad
ActiveCell.
Worksheets(Hoja1).Activate
MsgBox ActiveCell.Value
With ActiveCell.Font
.Bold=True
.Italic=True
End With
Pgina 3
Range(A1).Select
Range(A1:G5).Select
Recorre todas las celdas del rango A2 hasta A5 y muestra el valor de cada celda.
Sub ejemplo()
ejemplos del empleo de range y cells
escribo Hola en varias celdas de la hoja 2
Worksheets(Hoja2).Range(A1:B5) = Hola
lo mismo pero en celdas discontinuas
Worksheets(1).Range(F1, G5) = Hi
ahora en la hoja 2
Worksheets(Hoja2).Range(J1, K3, H5) = AAA
ActiveCell.Offset(2, 2) = Me desplazo 2 filas y 2 columnas
End Sub
Utilice la propiedad Rows o Columns para trabajar con filas o columnas enteras. Estas propiedades
devuelven un objeto Range que representa un rango de celdas. En el siguiente ejemplo, Rows(1)
Pgina 4
devuelve la fila uno de la Hoja1. A continuacin, la propiedad Bold del objeto Font del rango se
establece en True.
Sub FilaNegrita()
Worksheets(Hoja1).Rows(1).Font.Bold = True
End Sub
Para establecer el valor de una celda podemos utilizar alguna de las siguientes
instrucciones:
Range("B5").Value = 500
Cells(5, 2).Value = 600
For i = 1 To 10
For j = 1 To 5
Cells(i, j).Value = i * j
Next j
Next i
Ejemplo :
Pgina 5
Solucin:
Private Sub ComboBox1_Change()
Dim mes As String
mes = Me.ComboBox1.Value
Dim Finding As Range
Set Finding = Range("A2:A13").Find(What:=mes, LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext, MatchCase:=False)
If Finding Is Nothing Then
MsgBox "No existe"
Exit Sub
End If
Finding.Activate
B1 = ActiveCell.Offset(0, 1).Value
Me.TextBox1.Text = Cells(ActiveCell.Row, 2).Value
Me.TextBox2.Text = Cells(ActiveCell.Row, 3).Value
End Sub
Pgina 6
-o bienActiveSheet.Range("D5").Select
Pgina 7
Para seleccionar el rango D3:E11 en otra hoja 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 mtodo 4 anterior para seleccionar el rango:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Pgina 8
11. Cmo seleccionar una celda relativa a otra celda (que no sea la
celda activa)
Para seleccionar una celda que se encuentra cinco filas ms abajo y cuatro columnas a la derecha de la celda
C7, puede utilizar cualquiera de los ejemplos siguientes:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Pgina 9
Si el rango con nombre est en otra hoja (que no sea la activa), active primero esa hoja y, a continuacin,
seleccione el rango con el ejemplo siguiente:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Pgina 10
Pgina 11
Pgina 12
Para cualquier elemento entre comillas (por ejemplo, el rango con nombre "Prueba"),
tambin puede utilizar una variable cuyo valor sea una cadena de texto. Por ejemplo,
en lugar de escribir
ActiveWorkbook.Sheets("Hoja1").Activate
puede utilizar
ActiveWorkbook.Sheets(myVar).Activate
Ejemplo: El siguiente formulario permite agregar desde un formulario registros a una hoja.
Pgina 13
Pgina 14
Ejemplo:
Pgina 15
Pgina 16
Pgina 17
Pgina 18