Excel Trabajar con colecciones y Objetos

Publicado: 1 de agosto de 2012 en Actualidad

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.

  1. 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

  1. 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

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s