Visual Basic - control de varios checkbox

Life is soft - evento anual de software empresarial
 
Vista:

control de varios checkbox

Publicado por PILAR LOITI (1 intervención) el 29/01/2008 08:02:42
Hola |||

Tengo un formulario que ejecuto en Excel con bastantes checkbox. Estoy intentando hacer por medio de un for una rutina para comprobar el estado de cada checkbox y hacer que en funcion de si esta marcado o no cargue unas etiquetas dentro de un array. Pero no puedo hacer referencia a los checkbox...o no sé como hacerlo. ¿Me podeis indicar alguna solución?.

Pilar Loiti

Adjunto código(que no funciona) para tener una idea

Seis CheckBox en el formulario

For z = 1 To 6

x = 0

If CheckBox1&z.Value = True Then


dato = Label & z.Caption
grupo(x) = dato

' Cargamos la descripcion en el segundo array
z1 = z + 1
datodes = Label & z1.Caption
descripcion(x) = datodes

x = x + 1

End If
Next z
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:control de varios checkbox

Publicado por cmgcharli (128 intervenciones) el 29/01/2008 11:05:57
No puedes buscar los nombres de los checkBox concatenando a la parte del nombre el valor de la variable z
Utiliza la funcion For Each (VairableObjeto) In Objeto
En tu caso podria ser algo asi


Dim Z as Integer
Dim X as Integer
Dim VarObjeto as Object
Dim VarEtiqueta as Object

Nota: Con las instrucciones anteriores se declaran las variables Z y X como numericas y la Variable VarObjeto y la Variable VarEtiqueta como Objeto

Nota: Con el siguiente grupo de instrucciones lo que se pretende es recorrer con el For Each ...... In ............ Next todos lo controles que contiene el objeto formulario y determinar cuales de ellos con controles CheckBox y cuales de ellos se encuentran seleccionados determinando el valor de la propiedad Value si es igual a True estara activado y si es False estara desactivado.

For Each VarObjeto In NombreFormulario.Controls
If TypeOf VarObjeto Is CheckBox Then
If VarObjeto.Value=True then

Nota: Si llega aqui es que se ha lozalizado un control CheckBox
seleccionado y su nombre se obtiene con la siguiente instruccion
VarObjeto.Name
Por lo que veo a los CheckBox los llamas a todos igual
añadiendoles un numero y a sus etiquetas Label con el mismo
numero que su CheckBos correspondiente, por lo tanto lo que
debemos determinar es el numero que cada CheckBox tiene y con
ello encontrar las corresponientes etiquetas. Aqui entra en juego la
segunda variable Objeto declarada VarEtiqueta

For Each VarEtiqueta In NombreFormulario.Controls
If TypeOf VarEtiqueta Is Label Then
If VarEtiqueta.Nama="Label" & Mid(VarObjeto,8) t hen

Nota: Si llega aqui es que hemos localizado la etiqueta el
Label que lleva el mismo numero que el CheckBox es
decir Label&numero?, CheckBox&numero?. Es aqui en
este punto donde deberias trabajar con las etiquetas
cargandolas en los Arrays

End If
End If
Next

End If
End If
Next

Espero que te ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:control de varios checkbox

Publicado por cmgcharli (128 intervenciones) el 29/01/2008 11:26:40
Donde pone:
If VarEtiqueta.Nama="Label" & Mid(VarObjeto,8) t hen debe poner:
If VarEtiqueta.Nama="Label" & Mid(VarObjeto.Name,9) t hen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:control de varios checkbox

Publicado por carlos (125 intervenciones) el 29/01/2008 19:54:12
Te recomiendo algo en vez de tener x cantidad de checkbox con nombres diferentes , coloca un checkbox e indexalo la cantidad de veces que lo necesites...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar