ARRAY DE CONTROLES

8 envíos / 0 nuevos
Último envío
fjlruiz
Imagen de fjlruiz
Offline
última acción: Hace 7 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 11/01/2010 - 10:59
Puntos: 817
ARRAY DE CONTROLES

Hola:

Quiero hacer una macro que cree un formulario que contenga diferentes controles dependiendo de un numero determinado (i).

He estado buscando por la red y he encontrado este codigo: 

Dim mynewform As Object
Dim mycheckbox As Object

        
        Set mynewform = _
        Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_MSForm)

      ' Add a checkbox to the new UserForm.
      Set mycheckbox = mynewform.Designer.Controls.Add("Forms.CheckBox.1")

      ' With the new checkbox...
      With mycheckbox
         .Name = "Check1"
         .Caption = "Check here"
         .Left = 10
         .Top = 10
         .Height = 20
         .Width = 60
      End With

Bien, pues no encuentro la forma de crear un for i = 1 to i para que me introduzca tantos checkbox como i tenga.

Alguien me podría ayudar?

 

Un saludo

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 4 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: ARRAY DE CONTROLES

Un par de cosas o tres:

lo primero es que para que esto funcione hay que añadir una referencia a Microsoft visual basic for applications extensibility

Referencia a visual basic for applications extensibility

lo segundo:

como el bucle va a crear varios controles, no pueden estar todos en el mismo sitio, así que por ejemplo altera su posición en vertical

tampoco se pueden llamar igual, así que altera su nombre.

a ver qué tal así:

Dim mynewform As Object
Dim mycheckbox As Object
Dim i
      
        Set mynewform = Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_MSForm)
      ' Add a checkbox to the new UserForm.
      For i = 1 To 10  ' diez o los que sean
          Set mycheckbox = mynewform.Designer.Controls.Add("Forms.CheckBox.1")
          ' With the new checkbox...
          With mycheckbox
             .Name = "Check" & i   'no puede haber varios con el mismo nombre
             .Caption = "Check here"
             .Left = 10
             .Top = 10 * i  'para separarlo en vertical
             .Height = 20
             .Width = 60
          End With
      Next

------
Ya sé Excel, pero necesito más

 

------
Ya sé Excel, pero necesito más.

fjlruiz
Imagen de fjlruiz
Offline
última acción: Hace 7 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 11/01/2010 - 10:59
Puntos: 817
Re: ARRAY DE CONTROLES

Muchisimas gracias, pero ahora me ha aparecido otro problema mas.

Estoy haciendo este tipo de macros en casa con la version 2010 y en el trabajo tengo 2007. Pues cuando he intentado habrirlo en el trabajo, me dice que no encuentra la libreria DLL.

¿como puedo actualizar las referencias en VBA? o ¿como puedo resolver este problema?

Un saludo

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 4 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: ARRAY DE CONTROLES

No es por la versión de Excel, sino porque la dll esté instalada en el equipo o no.

si cambia la versión de la biblioteca lo interpreta como referencias diferentes (porque son diferentes)

Comprueba en el equipo del trabajo qué versión tienes instalada y añade una referencia a ella.

Búscala en la lista de referencias disponibles.

en mi equipo está en C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB (esto es de la 2007)

porque para la 2010 tengo otra carpeta parecida C:\Program Files\Common Files\microsoft shared\VBA\VBA7  con la nueva versión de vba. 

------
Ya sé Excel, pero necesito más

 

------
Ya sé Excel, pero necesito más.

fjlruiz
Imagen de fjlruiz
Offline
última acción: Hace 7 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 11/01/2010 - 10:59
Puntos: 817
Re: ARRAY DE CONTROLES

El problema que tengo, es que nisiquiera me deja abrir el proyecto VBA, puedo ver los objetos pero no el codigo, y cuando voy a cambiar las referencias las puedo ver pero no puedo tocarlas tampoco.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 4 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
no se me ocurre...

no se me ocurre qué puede ser.

haz una prueba guardando como .xls (97-2003) a ver si puedes editarlo.

entiendo que sólo te pasa con este libro ¿no? que hasta ahora habías podido editar las macros y las referencias sin problemas.

si tienes otro libro con macros abierto a la vez ¿puedes editarlo?

------
Ya sé Excel, pero necesito más

 

------
Ya sé Excel, pero necesito más.

fjlruiz
Imagen de fjlruiz
Offline
última acción: Hace 7 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 11/01/2010 - 10:59
Puntos: 817
Re: no se me ocurre...

Si lo guardo como .xls luego no puedo abrir el libro, se me queda bloqueado

Solo me pasa con este libro y creo que fue porque añadí una referencia desde excel 2010.

De todas formas, la solución ha sido facil. Abro el libro con excel 2010 y copio el codigo en otro libro abierto con excel 2007, y ya funciona.

A veces hay tantas cosas ocultas en excel y que no podemos tocar, que hay que recurrir a estos metodos tan rudimentarios, jeje.

 

 

Ramon (no verificado)
Imagen de Ramon
Agregar Macro

Cómo agreago una macro a ese control creado dinamicamente?