Hmm...
27.01.2023 12:17:20
Yal
Inspiriert von deiner Vorgabe, habe ich folgende Entwurf hergestellt. Es geht hier nicht, um "so muss es sein" sondern, so könnte es aussehen. Entdecken/Lernen kommt von verschiedenen Ansätze bewerten.
Irgendwie könnte ich mit dem Zustand speichern und Zustand zurückspielen auf keinem grünen Zweig. Alternativ bietet sich das Enabling. Die angeklickte Zustände der OptionButtons bleiben bestehen, aber ob wahrgenommen werden soll, wird durch die Abfrage der Enable-Zustand getestet
2 Frames: Frame1 und Frame2, je mit OptionButtons. Anzahl ist egal. Ein CommandButton "cmdOk".
Private Sub UserForm_Initialize()
frmControls_aktiviere "Frame2", False
End Sub
Private Sub Frame1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
frmControls_aktiviere "Frame2", False
frmControls_aktiviere "Frame1", True
End Sub
Private Sub Frame2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
frmControls_aktiviere "Frame1", False
frmControls_aktiviere "Frame2", True
End Sub
Private Sub frmControls_aktiviere(frmName As String, Aktiv As Boolean)
Dim Ct
Application.EnableEvents = False
For Each Ct In Controls(frmName).Controls
Ct.Enabled = Aktiv
Next
Application.EnableEvents = True
End Sub
Private Sub cmdOk_Click()
Dim Msg, Fr, Ct
For Each Fr In Array("Frame1", "Frame2")
For Each Ct In Controls(Fr).Controls
If Ct Then Msg = Msg & vbLf & Ct.Name & " angeklick" & IIf(Ct.Enabled, " und erlaubt.", " aber blockiert.")
Next
Next
MsgBox Mid(Msg, 2) 'ohne führende vbLf
End Sub
VG
Yal