Obtener Caption del OptionButton Activo en un Frame

Hola queridos expertos tengo esta situación

Un UserForm Con tres Frames con OptionButtons dentro de ellos y un Label

Frame1

OptionButton1

OptionButton2

Frame2

OptionButton3
OptionButton4
Frame3
OptionButton5
OptionButton6

Necesito que Label1.Caption sea igual al Caption del OptionButton activo en cada uno de los Frames y que este cambie con cada combinación de los OptionButtons. (mediante eventos Click o Change del OB)

He probado con

Sub FrameChange()
If Frame2.ActiveControl.Value = True Then
Label1.Caption = Frame2.ActiveControl.Caption & Frame1.ActiveControl.Caption & Frame3.ActiveControl.Caption
Else
Label1.Caption = "None selected"
End If
End Sub

pero solo me funciona en un evento KeyDown:

Private Sub OptionButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
FrameChange
End Sub

Lo he probado con eventos Change y Click pero no funciona.

Ojalá puedan ayudarme.

De antemano, muchísimas gracias.

Respuesta
1

Prueba con esto:

Private Sub OptionButton1_Click()
Label1.Caption = OptionButton1.Caption
End Sub
Private Sub OptionButton2_Click()
Label1.Caption = OptionButton2.Caption
End Sub
Private Sub OptionButton3_Click()
Label1.Caption = OptionButton3.Caption
End Sub
Private Sub OptionButton4_Click()
Label1.Caption = OptionButton4.Caption
End Sub
Private Sub OptionButton5_Click()
Label1.Caption = OptionButton5.Caption
End Sub
Private Sub OptionButton6_Click()
Label1.Caption = OptionButton6.Caption
End Sub

Saludos.Dante Amor
Si es lo que necesitas.

Hola Experto, muchas gracias por tu pronta respuesta, quisiera explicar un poco más lo que necesito exactamente.

Tengo lo siguiente (OptionButton en negrita, es la opción seleccionada Value = True)

Dentro de Frame1

OptionButton1.Caption = Solicitud

OptionButton2.Caption = Devolución

Dentro de Frame2

OptionButton3.Caption = Tienda

OptionButton4.Caption = Proveedor

Dentro de Frame3

OptionButton5.Caption = Zapatos

OptionButton1.Caption = Ropa

quisiera que al seleccionar una opción dentro de cada frame

Label1.Caption = (Caption de OB seleccionado Frame1) + (Caption de OB seleccionado Frame2) + (Caption de OB seleccionado Frame3)

O sea

Label1.Caption = "SolicitudTiendaZapatos"

Y que al cambiar cualquier selección de OptionButton, Label1 cambie automáticamente.

Gracias por cualquier ayuda al respecto.

Prueba esta

Private Sub OptionButton1_Click()
    cadena
End Sub
Private Sub OptionButton2_Click()
    cadena
End Sub
Private Sub OptionButton3_Click()
    cadena
End Sub
Private Sub OptionButton4_Click()
    cadena
End Sub
Private Sub OptionButton5_Click()
    cadena
End Sub
Private Sub OptionButton6_Click()
    cadena
End Sub
Sub cadena()
'Por.DAM
    Label1.Caption = ""
    For Each c In Controls
        If TypeName(c) = "OptionButton" Then _
            If c Then Label1.Caption = Label1.Caption & c.Caption
    Next
End Sub

Saludos.Dante Amor

Mil gracias ahora si funciona para mi fin, solo me queda una duda,

Es posible manejar los controles "c" por Frame y no en general, es decir obtener el caption del OptionButton para cada frame.

por ejemplo c1 para frame1, c2 para frame2, c3 para frame3.

y así lograr label1.Caption = label1.Caption & c1.Caption & " de " & c2.Caption & " por " & c3.Caption

De antemano, muchas gracias

Te pongo otra versión:

Private Sub OptionButton1_Click()
    cadena
End Sub
Private Sub OptionButton2_Click()
    cadena
End Sub
Private Sub OptionButton3_Click()
    cadena
End Sub
Private Sub OptionButton4_Click()
    cadena
End Sub
Private Sub OptionButton5_Click()
    cadena
End Sub
Private Sub OptionButton6_Click()
    cadena
End Sub
Sub cadena()
'Por.DAM
    Label1.Caption = ""
    For Each c In Frame1.Controls
        If TypeName(c) = "OptionButton" Then If c Then c1 = c1 & c.Caption
    Next
    For Each c In Frame2.Controls
        If TypeName(c) = "OptionButton" Then If c Then c2 = c2 & c.Caption
    Next
    For Each c In Frame3.Controls
        If TypeName(c) = "OptionButton" Then If c Then c3 = c3 & c.Caption
    Next
    Label1.Caption = c1 & " de " & c2 & " por " & c3
End Sub

Saludos. Dante Amor
No olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas