Anterior
Página:
1 2
3 [4]
Trabajando con Colecciones
En esta sección aparecerán algunas
de las instrucciones 'básicas' para utilizar con COLECCIONES. Una vez copiada en
el Editor, colocar el cursor sobre la palabra en negrita y presionar F1 para
acceder a la Ayuda Excel. Allí se encontrarán más explicaciones y ejemplos para
esa instrucción.
Una colección es un conjunto de objetos del mismo tipo: hojas, celdas, controles o Shapes, imágenes.
Para trabajar con una colección se programa un bucle: es decir repetir la misma instrucción para cada elemento de la colección.
A continuación algunos ejemplos
del bucle: For Each....Next
Ejemplo1: introducir un nombre para cada hoja del libro
activo. Esta rutina se coloca en un módulo:
Sub nombraHojas()
Dim MiNombre As String
Dim hoja As Worksheet
For Each hoja In Worksheets
MiNombre = InputBox("Ingrese nombre de hoja: ")
hoja.Name = MiNombre
Next hoja
End Sub
Ejemplo2: introducir valores para cada celda de un rango
(se coloca en un módulo)
Sub colocaValores()
Dim celdita as Range
For Each celdita in ActiveSheet.Range("A1:B10")
celdita.Value = InputBox("Ingrese valor: ")
Next celdita
End Sub
Ejemplo3: introducir los
mismos valores en celdas de todas las
hojas (se coloca en un módulo)
Sub valoresHoja()
Dim hoja as Sheets
For Each hoja in Sheets
hoja.Range("E3").Value = Date
hoja.Range("F3").Value = Time
Next hoja
End Sub
OTRO TIPO
DE BUCLES:
Ejemplo1:
realizar una acción por cada valor que tome una variable i (se
coloca en un módulo)
Sub muestraNombre()
Dim i as Byte
Dim hoja as Worksheet
For i=1 to 5
Msgbox WorkSheets(i).Name
Next
End Sub
En este ejemplo se muestra el nombre
de cada hoja, desde la nro 1 a la 5
Ejemplo2:
realizar una acción mientras se cumpla una condición (se
coloca en un módulo)
Sub recorreRango()
'Se recorre la col A a partir de la
fila 2 hasta encontrar una celda vacía.
'El valor de cada celda se
incrementa en 1
Range("A2").Select
While Activecell.Value <> ""
ActiveCell.Value = ActiveCell.Value + 1
Wend
End Sub
Trabajando con Objetos
A continuación algunos ejemplos de cómo llamar a objetos insertados en hoja, como ser Cuadros de texto, Listas o
Cuadros combinados y también un Userform.
1- Llamando a un Userform, desde un botón:
En una hoja de Excel, los botones que lanzan una acción, pueden ser colocados con la barra de Formularios o Cuadro de Controles.
Botón de formulario: se asigna una macro, como la del ejemplo, que previamente se escribió en un
módulo en el Editor de Visual Basic. Ejemplo:
Sub mostrando ()
UserForm1.Show 'nombre del Userform que se desea mostrar
End Sub
- Botón del Cuadro de controles: una vez dibujado en la hoja, clic derecho, opción Ver código y escribir la rutina (ésta se habilita en la
hoja donde aparecerá el control). Ejemplo:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
2- Asignando valores a los Cuadros de texto:
Ejemplos de cómo registrar datos en
los textbox dibujados en hoja con la barra 'Cuadro de controles'.
Nota: Estas
instrucciones como las del punto 3 y 4, se colocan dentro de alguna rutina
general, como puede ser un botón para guardar o aceptar.
TextBox1.Value = "CANCELADO"
TextBox2 = Sheets("Hoja3").Range("A5").Value
TextBox2 = Range("C1").Value + Range("C2").Value
Notese que en
Textbox2 se omitió la expresión 'value' ya que esa es su propiedad
predeterminada. Puede colocarse o no.
3- Volcar datos de un control Textbox y Combobox a la hoja:
Estos controles han sido dibujados con la barra 'Cuadro de controles'
'pasar datos de un control Textbox a
la celda indicada en Cells(fila,col)
Cells(fila, col).Value = TextBox1.Value
'pasar el valor de un combo a la
fila siguiente de la indicada en Cells(fil, col)
Sheets("Hoja1").Cells(fila, col).Offset(1, 0).Value = Combobox1.Value
4- Asignar rango a un control Listbox y Combobox:
Estos controles han sido dibujados en la hoja con la barra 'Formularios'
'asignar rango de entrada al control Lista
ActiveSheet.Shapes("List Box 1").Select
With Selection
.ListFillRange = "$F$1:$F$4"
End With
'asignar rango de entrada al control Combobox
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = "$K$1:$K$7"
End With
* Otra manera de asignar rango. En
este caso el control se dibujó con la barra ActiveX o Cuadro de Controles:
ActiveSheet.ListBox1.ListFillRange =
"$F$1:$F$4"
5- Cargar datos a un control ListBox de un UserForm:
Private Sub UserForm_Activate()
Dim item As Variant
For Each item In Range("F1:F6")
ListBox1.AddItem item.Value
Next item
End Sub
Anterior
Página:
1 2
3 [4]