OptionButton.GroupName

19/12/2004 - 09:41 por Ignacio Pérez | Informe spam
Hola a todos:
Me gustaria que me echaseis una mano en un problemilla que tengo. ¿Como
averiguo la cantidad de OptionButton.GroupName que hay en un formulario para
meter los valores en una Array?.
Por mas vueltas que le doy no me hago con ello
Un saludo.
 

Leer las respuestas

#1 Héctor Miguel
19/12/2004 - 11:02 | Informe spam
hola, Ignacio !

...¿Como averiguo la cantidad de OptionButton.GroupName que hay en un formulario
... para meter los valores en una Array?.



siguiendo una 'secuencia logica' de eventos, te expongo la forma 'larga' [ya encontraras la forma de 'adelgazarla']
=> al inicializarse el formulario...
1.- 'barrer' TODOS los controles del formulario 'buscando' SOLO los que sean 'OptionButton'
2.- 'llenar' una coleccion con los [posibles] 'GroupNames' a los que 'pertenezca' cada control
=> en el momento en que sea necesario 'detectar' los optionbuttons 'activos' de cada grupo...
1.- 'barrer' los 'GroupNames' [y por cada grupo]...
2.- 'barrer' [nuevamente] los controles 'buscando CUAL opcion de cada grupo esta 'seleccionado'
3.- 'al tiempo' que vas 'llenando' una matriz con cada seleccion [o si ninguna esta] 'activada'

el siguiente ejemplo muestra 'el resultado' al pulsar un 'CommandButton1' en el formulario.
si cualquier duda... ¿comentas?
saludos,
hector.
en el modulo de codigo del formulario ==Dim Ctr As Control, Grupos As New Collection, Grupo As Integer, Opciones() As String
Private Sub UserForm_Initialize()
For Each Ctr In Me.Controls
If TypeName(Ctr) = "OptionButton" Then
On Error Resume Next
If Ctr.GroupName <> "" Then Grupos.Add Ctr.GroupName, CStr(Ctr.GroupName)
End If: Next
End Sub
Private Sub CommandButton1_Click(): ReDim Opciones(Grupos.Count)
For Grupo = 1 To Grupos.Count: Opciones(Grupo - 1) = "Ninguno"
For Each Ctr In Me.Controls
If TypeName(Ctr) = "OptionButton" Then
If Ctr.GroupName = Grupos.Item(Grupo) And Ctr Then
Opciones(Grupo - 1) = Ctr.Name: Exit For
End If: End If: Next: Next
For Grupo = 1 To Grupos.Count
MsgBox Grupos.Item(Grupo) & " - " & Opciones(Grupo - 1)
Next
End Sub

Preguntas similares