Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

vba arrays de controles o similar¿?

Estas en el tema de vba arrays de controles o similar¿? en el foro de Visual Basic clásico en Foros del Web. Hola! Necesito que alguien me ayude con el siguiente tema: -Vba y excel (no tengo el visual basic propiamente. -Tengo en un formulario cinco combobox ...
  #1 (permalink)  
Antiguo 05/04/2008, 04:51
 
Fecha de Ingreso: abril-2008
Mensajes: 13
Antigüedad: 16 años, 1 mes
Puntos: 0
vba arrays de controles o similar¿?

Hola! Necesito que alguien me ayude con el siguiente tema:

-Vba y excel (no tengo el visual basic propiamente.
-Tengo en un formulario cinco combobox y los cinco con los mismos datos.
-Los combobox se llaman cmbfrecuncia1,cmbfrecuencia2, ...y cmbfrecuencia5
-En el código tengo lo siguiente:

Private Sub UserForm_Initialize()

cmbfrecuencia1.AddItem "Anual"
cmbfrecuencia1.AddItem "Semestral"
cmbfrecuencia1.AddItem "Bimestral"
cmbfrecuencia1.AddItem "Trimestral"
cmbfrecuencia1.AddItem "Cuatrimestral"
cmbfrecuencia1.AddItem "Mensual"

cmbfrecuencia2.AddItem "Anual"
cmbfrecuencia2.AddItem "Semestral"
cmbfrecuencia2.AddItem "Bimestral"
cmbfrecuencia2.AddItem "Trimestral"
cmbfrecuencia2.AddItem "Cuatrimestral"
cmbfrecuencia2.AddItem "Mensual"

etc....

cmbfrecuencia5.AddItem "Anual"
cmbfrecuencia5.AddItem "Semestral"
cmbfrecuencia5.AddItem "Bimestral"
cmbfrecuencia5.AddItem "Trimestral"
cmbfrecuencia5.AddItem "Cuatrimestral"
cmbfrecuencia5.AddItem "Mensual"

End sub

-¿como puedo simplificar y escribirlo solo una vez y no cino?
-He intentado con lo siguiente, pero no me sale. Salta mensaje ERROR DE COMPILACIÓN, NO SE HA DEFINIDO SUB O FUNCTION.

Private Sub UserForm_Initialize()
Dim X(1 To 5) As Integer

For ii = 1 To 5
cmbfrecuenciaX(ii).AddItem "Anual"
cmbfrecuenciaX(ii).AddItem "Semestral"
cmbfrecuenciaX(ii).AddItem "Bimestral"
cmbfrecuenciaX(ii).AddItem "Trimestral"
cmbfrecuenciaX(ii).AddItem "Cuatrimestral"
cmbfrecuenciaX(ii).AddItem "Mensual"

Next ii

End sub

A ver si alguien sabe que puedo hacer...

Gracias

Diana

Última edición por DIANA_MM; 05/04/2008 a las 04:53 Razón: Porque ya no se como yo sola encontrar la solución.
  #2 (permalink)  
Antiguo 05/04/2008, 05:26
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: vba arrays de controles o similar¿?

Hola Diana, esto funciona en VB6 (no sé en VBA)

Código:
Dim ElCombo As ComboBox
For Each ElCombo In Me.Controls
    ElCombo.AddItem "Anual"
    ElCombo.AddItem "Semestral"
    ElCombo.AddItem "Bimestral"
    ' ... etc
Next
Un saludo
  #3 (permalink)  
Antiguo 05/04/2008, 06:00
 
Fecha de Ingreso: abril-2008
Mensajes: 13
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: vba arrays de controles o similar¿?

Avellaneda, gracias por la información....Me da error, lo que no se es si te he entendido bien porque soy novatísima.

Me salta mensaje que dice "Se ha producido el error 13 en tiempo de ejecución. No coinciden los tipos".

Además tampoco entiendo, si yo en el formulario llamo a estos cindo combobox (Elcombo1,elcombo2,elcombo3,elcombo4,elcombo5....¿ cómo entiende el programa que estos son el combo del código?? faltaría el indice no.

Bueno gracias, seguiré insistiendo. Si se te ocurre algo es bienvenido.
  #4 (permalink)  
Antiguo 05/04/2008, 13:10
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: vba arrays de controles o similar¿?

Hola,diana,el codigo seria asi:

Código:
Private Sub UserForm_Initialize()
Dim c As ComboBox
For Each c In Me.Controls
c.AddItem "Anual"
c.AddItem "Semestral"
c.AddItem "Bimestral"
c.AddItem "Trimestral"
c.AddItem "Cuatrimestral"
c.AddItem "Mensual"
Next
End Sub
saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #5 (permalink)  
Antiguo 05/04/2008, 13:11
 
Fecha de Ingreso: abril-2008
Mensajes: 13
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: vba arrays de controles o similar¿?

Hola...
Al final he entendido lá rutina que proponias...el problema?? que ahora me aplica lo que digo en el código en todos los combobox del formulario....
He puesto el siguiente código:

Dim ctrl As Control
For Each ctrl In UserForm.Controls
If TypeName(ctrl) = "ComboBox" Then
With ctrl
.AddItem "Anual"
.AddItem "Semestral"
.AddItem "Bimestral"
.AddItem "Trimestral"
.AddItem "Cuatrimestral"
.AddItem "Mensual"
End With
End If
Next ctrl

Me parece que para vba mal lo tengo!

Seguiré en ello.Saludos y si alguien tiene alguna idea que me la cuente
  #6 (permalink)  
Antiguo 08/04/2008, 08:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Re: vba arrays de controles o similar¿?

Puedes hacerlo así, comprobando el nombre de los ComboBox:
Código:
 
Dim ctrl As Control
For Each ctrl In Me.Controls
    If TypeName(ctrl) = "ComboBox" And Left(ctrl.Name, 13) = "cmbfrecuencia" Then
        With ctrl
            .AddItem "Anual"
            .AddItem "Semestral"
            .AddItem "Bimestral"
            .AddItem "Trimestral"
            .AddItem "Cuatrimestral"
            .AddItem "Mensual"
        End With
    End If
Next ctrl
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 08/04/2008, 13:00
 
Fecha de Ingreso: abril-2008
Mensajes: 13
Antigüedad: 16 años, 1 mes
Puntos: 0
De acuerdo Re: vba arrays de controles o similar¿?

Hola!

Muchas gracias David! Ahora si que funciona y así el código no será de millones de páginas.

Entre todos ha salido.Merci por vuestra colaboración.

Saludos

Diana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:26.