VBA pętla+checkbox

0

Cześć,

od dłuższego czasu męczę się z takim, wydawałoby się prostym, zadaniem. Otóż stworzyłam tzw. formularz użytkownika w vba, mam w nim 9 checkboxów oraz commandbutton. Chciałabym, aby wyświetlały się odpowiednie komunikaty (msgbox) przy zaznaczeniach. Tzn. jeśli checkboxy c1-c6 będą zaznaczone, a b1-b3 nie, ma się pokazywać komunikat "TAK", natomiast w każdym innym przypadku "NIE" i ma wracać do formularza. Próbuję na różne sposoby i nie daję rady. Udało mi się, żeby wyświetlał się komunikat TAK, ale kiedy powinien się pokazywać NIE, nie ma nic. Nie potrafię też tego sensownie zapętlić.
Niżej mój kod (jeden z):

Private Sub Gotowe_Click1()

Do Until c1 = True And c2 = True And c3 = True And c4 = True And c5 = True And c6 = True And b1 = False And b2 = False And b3 = False
UsefForm1.Show
If c1 = True And c2 = True And c3 = True And c4 = True And c5 = True And c6 = True And b1 = False And b2 = False And b3 = False Then
MsgBox ("TAK")

Exit Do
Else: MsgBox ("NIE")

'UserForm1.Hide
End If

'Do Until c1 = True And c2 = True And c3 = True And c4 = True And c5 = True And c6 = True And b1 = False And b2 = False And b3 = False

Loop
end sub

Choć on akurat wcale nie działa :(
Potraficie mi pomóc?

0

Rozumiem, że ma to działać na wywołanie przycisku. Wtedy można jak poniżej. Na przyszłość proponuję formatować kod zarówno w vab jak i postach.

Private Sub CommandButton1_Click()
    With UserForm1
        If .CheckBox1 = True And .CheckBox2 = True And .CheckBox3 = True And .CheckBox4 = True _
        And .CheckBox5 = True And .CheckBox6 = True And .CheckBox7 = False And .CheckBox8 = False And .CheckBox9 = False Then
            MsgBox "Tak"
        Else
            MsgBox "Nie"
            .Hide
        End If
    End With
End Sub


0

Można też bez takiego dużego warunku.

Private Sub CommandButton1_Click()

For Each ctrl In UserForm1.Controls
   If TypeName(ctrl) = "CheckBox" And ((ctrl.Value = False And InStr(ctrl.Name, "c") > 0) Or (ctrl.Value = True And InStr(ctrl.Name, "b") > 0)) Then
        MsgBox "NIE"
        Exit Sub
    End If
Next

MsgBox "TAK"

End Sub

1 użytkowników online, w tym zalogowanych: 0, gości: 1