Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

UF OptionButton Gruppe prüefen


Betrifft: UF OptionButton Gruppe prüefen von: Sigi
Geschrieben am: 06.08.2018 14:13:48

Hallo,
die Prüfung ob ein OptionButton in einer Gruppe wahr ist funktioniert leider nicht.
In beiliegender Mappe auch noch eine andere Variante die leider auch nicht die Lösung bringt.
Danke, für Eure Hilfe!
Gruß
Sigi

https://www.herber.de/bbs/user/123165.xlsm

Private Sub CommandButton1_Click()
    With U1
        bytZaehler = 0
            For Each cb In .Controls
                Select Case TypeName(cb)
                    Case "OptionButton"
                        If Left(cb.Name, 8) = "optStamm" And cb.GroupName = "KD" Then
                            lxl = 0
                            For lol = 1 To 2
                                If cb.Value = True Then
                                    lxl = lxl + 1
                                End If
                            Next
                        End If
                            If lxl = 0 Then
                            sTeilName = "Kundengruppe"
                                GoTo msg
                            End If
                            
                         If Left(cb.Name, 8) = "optStamm" And cb.GroupName = "P" Then
                            lxl = 0
                            For lol = 1 To 2
                                If cb.Value = True Then
                                    lxl = lxl + 1
                                End If
                            Next
                        End If
                            If lxl = 0 Then
                                sTeilName = "Privatgruppe"
                                GoTo msg
                            End If
                        End Select
            Next cb
            If lxl = 2 Then GoTo 0
msg:
            MsgBox "Sie haben in der Gruppe " & sTeilName & " nichts ausgewählt"
    End With
0 End Sub

  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Daniel
Geschrieben am: 06.08.2018 14:38:02

Hi
wenn du das Leben einfach haben willst, ersetze jede Optionbuttongruppe durch eine List- oder Combobox.
Zu dieser fragst du einfach den ListIndex ab, dieser muss größer als -1 sein.

Gruß Daniel


  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Hajo_Zi
Geschrieben am: 06.08.2018 14:45:45

warum soviel Code?

Private Sub CommandButton1_Click()
    With U1
        bytZaehler = 0
        sTeilName = ""
        For Each cb In .Controls
            Select Case TypeName(cb)
                Case "OptionButton"
                    If cb = True Then
'                        If Left(cb.Name, 8) = "optStamm" And cb.GroupName = "KD" Then
'                            lxl = 0
                            sTeilName = cb.Caption
                            '                            For lol = 1 To 2
                            '                                If cb.Value = True Then
                            '                                    lxl = lxl + 1
                            '                                End If
                            '                            Next
'                        End If
'                        If lxl = 0 Then
'                            sTeilName = "Kundengruppe"
'                            Exit For
'                        End If
'
'                        If Left(cb.Name, 8) = "optStamm" And cb.GroupName = "P" Then
'                            lxl = 0
'                            For lol = 1 To 2
'                                If cb.Value = True Then
'                                    lxl = lxl + 1
'                                End If
'                            Next
'                        End If
'                        If lxl = 0 Then
'                            sTeilName = "Privatgruppe"
'                            Exit For
'                        End If
                    End If
            End Select
        Next cb
        If sTeilName <> "" Then
            MsgBox "Sie haben in der Gruppe " & sTeilName & " nichts ausgew?hlt"
        End If
    End With
End Sub
Falls Du was anderes ausgeben willst arbeite mit der Eigenschaft "Tag"

GrußformelHomepage

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.


  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Sigi
Geschrieben am: 06.08.2018 16:19:26

Hallo,
leider hilft mir beides nicht.
Ist es nicht möglich die Group-Eigenschaften der OptionButton abzufragen ob einer von beiden ausgewählt ist.
Ich möchte wissen welche Gruppe nicht ausgewählt wurde.
Die Tag.Eigenschaft ist schon belegt.
Es gibt 10 verschiedene Gruppen.
Danke!
Gruß
Sigi


  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Hajo_Zi
Geschrieben am: 06.08.2018 16:46:12

Hallo Sigi,

Du sprichts also nicht von der verlinkten Datei in der Tag nicht belegt ist. Lese den Groupname aus.
Ich bin dann raus, da ich nicht auf fremde Rechner schaue.

Gruß Hajo


  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Sigi
Geschrieben am: 06.08.2018 17:08:49

Hallo,
nun nochmal ein paar Ansätze von mir die beide nicht funktionieren.
Wo liegt der Fehler?
Danke!
Gruß
Sigi

Private Sub CommandButton4_Click()
Dim arr()  As Variant
bytZaehler = 0
    For Each cb In U1.Controls
        Select Case TypeName(cb)
            Case "OptionButton"
            arr = Array("optStamm_ZahlvorText", "optStamm_ZahlnachText")
                For lol = 0 To UBound(arr)
                    If cb(arr(lol)).Value = False Then bytZaehler = bytZaehler + 1
                    Next lol
                End Select
    Next cb
        If bytZaehler = 2 Then
            MsgBox "fehler"
        End If
End Sub

Private Sub CommandButton1_Click()
    With U1
    bytZaehler = 0
       For Each cb In .Controls
          For lol = 1 To 2
            If TypeName(cb) = "OptionButton" And cb.GroupName = "KD" And cb.Value = false Then
               bytZaehler = bytZaehler + 1
            End If
       Next
       If bytZaehler = 2 Then
         sTeilName = "Kunden"
         GoTo msg
       End If
    Next cb
msg:
            MsgBox "Sie haben in der Gruppe " & sTeilName & " nichts ausgewählt"
           End With
0 End Sub



  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Daniel
Geschrieben am: 06.08.2018 18:12:15

Hi

probiers mal mit diesem Code.
Vorteil ist, dass du im Code die Gruppennamen nicht mehr explizit aufführen musst, sondern diese unabhängig von der Anzahl automatisch ermittelt werden.

Nachteil ist, dass du dich, um diesen Code zu verstehen, mit dem Objekt "Dictionary" auseinandersetzen solltest (was aber kein Hexenwerk ist und extrem hilfreich beim Programmieren)

Private Sub CommandButton1_Click()
Dim crt As Control
Dim grp As Variant
Dim Gruppen As Object
Dim Erg As String

Set Gruppen = CreateObject("Scripting.Dictionary")

For Each crt In Me.Controls
    If TypeName(crt) = "OptionButton" Then
        grp = crt.GroupName
        
        If Gruppen.exists(grp) Then
            If crt.Value = True Then Gruppen(grp) = True
        Else
            Gruppen(grp) = crt.Value
        End If
    End If
Next

For Each grp In Gruppen.keys
    If Not Gruppen(grp) Then Erg = Erg & vbLf & grp
Next

If Erg = "" Then
    MsgBox "Alle Optionbuttongruppen ausgefüllt"
Else
    MsgBox "Folgene Optionbuttongruppen müssen noch ausgewählt werden:" & Erg
End If
End Sub
Getestet mit deiner Beispieldatei.

Gruß Daniel


  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Sigi
Geschrieben am: 06.08.2018 19:15:39

Hallo Daniel,
vielen Dank, genauso habe ich es mir vorgstellt.

Wenn ich CreateObject("Scripting.Dictionary") richtig verstehe machst Du aus der Group.Eigenschaft eine Art Array und fragst dann den Zustand der OptButton ab.
Ist die Eigenschaft in diesem Array gegen (wahr) dann suchst Du die nächste Gruppe.
Mit In Gruppen.keys prüft man ob die Eigenschaften nicht erfüllt sind.
Ich könnte das z.B auch auf andere Steuerelemente übertragen, für Combo und Textboxen wenn ich die
Tag.eigenschaft "Eingaben" für alle Elemente setzen und dann prüfen lasse ob diese ausgefüllt sind.
Muß mich aber noch näher damit befassen.
Hast mir einen Super- Denkanstoss gegeben.

Gruß
Sigi


  

Betrifft: AW: Vergessen Kontrollkästen zu deaktivieren o.T von: Sigi
Geschrieben am: 06.08.2018 22:02:48

.


  

Betrifft: AW: UF OptionButton Gruppe prüefen von: Daniel
Geschrieben am: 07.08.2018 09:51:38

Hi
ein Dictionary ist im Prinzip ein eindimensionales Array mit einem Freitext-Index.
dh ich erstelle ein Array, bei dem jede Gruppe einen Index bekommt, dieser ist der Gruppenname.
Wenn ein Button den Wert WAHR hat, schreibe ich dieses WAHR in seinen Index.
Ist der Wert FALSCH, verändere ich den Index nicht, dh ein einmal eingetragenes WAHR bleibt erhalten.
lediglich wenn der Gruppenname das erste mal auftaucht, wird WAHR oder FALSCH in den Index geschrieben, damit dieser überhaupt erstellt wird.

Gruß Daniel


Beiträge aus dem Excel-Forum zum Thema "UF OptionButton Gruppe prüefen"