Visual Basic Checkbox auslesen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Visual Basic Checkbox auslesen
von: Jana
Geschrieben am: 24.09.2015 10:09:35

Hallo zusammen,
ich bin bisher nur stiller Mitleser gewesen und habe nun selbst ein Problem:
Ich habe eine Userform im visual basic gebaut, in die zuerst ein paar Angaben eingetragen oder auch ausgewählt werden. Bei Klick auf den Sende-Button (CommandButton1), sollen dann alle Einträge überprüft werden und wenn alles korrekt ist, der Inhalt in eine Excel-Tabelle geschrieben werden.
In der Userform gibt es eine Checkbox, die je nach Auswahl in der Combobox1 mit einem Label überdeckt wird oder eben sichtbar ist. Wenn die Checkbox überdeckt ist, soll automatisch in Spalte 13 der Excel-Tabelle "kostenlos" stehen, sonst bei Anwählen der Checkbox = 1 oder bei leerer Checkbox = 2.
Das Überdecken bei den vorher festgelegten kostenlosen Dingen funktioniert prima.
Aber das Eintragen in die Excel-Datei funktioniert nicht.
Meine Codes sehen so aus:


Private Sub ComboBox1_Change()
If ComboBox1.Value = "def" Then
UserForm2.Show
UserForm1.Label10.Visible = False
End If
If ComboBox1.Value = "ghi" Then
UserForm3.Show
End If
If ComboBox1.Value = "abc" Then
UserForm1.Label11.Visible = True
Else: UserForm1.Label11.Visible = False
End If
If ComboBox1.Value = "ghi" Or ComboBox1.Value = "abc" Or ComboBox1.Value = "jkl" Or
 ComboBox1.Value = "mno" Or ComboBox1.Value = "pqr" Or ComboBox1.Value = "stu" Or
 ComboBox1.Value = "vwx" Or ComboBox1.Value = "yza" Or ComboBox1.Value = "bcd" Then
UserForm1.Label10.Visible = True
End If
If ComboBox1.Value = "aaa" Or ComboBox1.Value = "bbb" Or ComboBox1.Value = "ccc" Or
 ComboBox1.Value = "ddd" Or ComboBox1.Value = "eee" Or ComboBox1.Value = "fff" Or
 ComboBox1.Value = "ggg" Then
UserForm1.Label10.Visible = False
End If
End Sub

.
.
.
Private Sub CommandButton1_Click()
If Not IsNumeric(Me.TextBox1.Value) Then
        Call MsgBox("Bitte Nr. eingeben!", vbExclamation Or vbOKOnly)
        Me.TextBox1.SetFocus
        Else: TextBox3.Text = Evaluate("=VLOOKUP(" & TextBox1.Text & ",'Tabelle2'!A:B,2,0)")
   End If
        
 If Not IsDate(Me.TextBox9.Value) Then
        Call MsgBox("Bitte Datum eingeben! (Format: TT.MM.JJJJ)", vbExclamation Or vbOKOnly)
        Me.TextBox9.SetFocus
    If IsDate(Me.TextBox9.Text) Then
        If Not Me.TextBox9.Text = Format(CDate(Me.TextBox9.Text), "DD/MM/YYYY") Then
            MsgBox "Falsches Datumsformat!"
            Me.TextBox9.SetFocus
            End If
            End If
            End If
            
   If IsNumeric(Me.TextBox1.Value) And IsDate(Me.TextBox9.Value) And ComboBox1.Value <> "abc"   _
_
Then
        Dim a As Long
        a = Cells(Rows.Count, 3).End(xlUp).Row + 1
    Cells(a, 15) = Me.TextBox9.Value
    Cells(a, 1) = Me.TextBox1.Value
    Cells(a, 2) = Me.ComboBox1.Value
    Cells(a, 3) = Me.TextBox3.Value
    Cells(a, 4) = Me.TextBox4.Value
    Cells(a, 5) = Me.TextBox6.Value
    Cells(a, 8) = Me.Txt_Datum1.Value
    End If
    If IsNumeric(Me.TextBox1.Value) And IsDate(Me.TextBox9.Value) And ComboBox1.Value = "abc"   _
_
Then
    a = Cells(Rows.Count, 3).End(xlUp).Row + 1
    Cells(a, 16) = Me.TextBox9.Value
    Cells(a, 1) = Me.TextBox1.Value
    Cells(a, 2) = Me.ComboBox1.Value
    Cells(a, 3) = Me.TextBox3.Value
    Cells(a, 4) = Me.TextBox4.Value
    Cells(a, 5) = Me.TextBox6.Value
    Cells(a, 8) = Me.Txt_Datum1.Value
    If ComboBox2.Value = "getrennt (nur bei abc)" Then
    Cells(a, 10) = "getrennt"
    ElseIf ComboBox2.Value = "zusammengefasst (nur bei abc)" Then
    Cells(a, 10) = "zusammengefasst"
    Else: Cells(a, 10) = Me.ComboBox2.Text
    If Label10.Visible = True Then
    Cells(a, 13) = "kostenlos"
    If Label10.Visible = False Then
    If CheckBox1.Value = True Then
    Cells(a, 13) = "1"
    ElseIf CheckBox1.Value = False Then
    Cells(a, 13) = "2"
    End If
    End If
    End If
End If
CheckBox1.Value = False
End If
End Sub

Bild

Betrifft: AW: Visual Basic Checkbox auslesen
von: Rudi Maintaire
Geschrieben am: 24.09.2015 10:24:43
Hallo,
erstmal frage ich mich, warum du nicht die Checkbox ein- und ausblendest statt das Label.

If Label10.visible then
  cells(a,13="kostenlos"
else
  cells(a,13)=checkbox1+2
end if
Gruß
Rudi

Bild

Betrifft: AW: Visual Basic Checkbox auslesen
von: Jana
Geschrieben am: 24.09.2015 10:38:23
Hallo, das mit dem ausblenden der checkbox hat leider nicht funktioniert, deshalb hatte ich mir vorerst so geholfen...

Bild

Betrifft: AW: Visual Basic Checkbox auslesen
von: Jana
Geschrieben am: 24.09.2015 10:42:19
Tut mir leid, aber ich verstehe den Code nicht.
If Label10.visible then
cells(a,13="kostenlos"
else
cells(a,13)=checkbox1+2
end if
Wenn das label nicht sichtbar ist, d.h. die Checkbox IST sichtbar, dann soll nach Klick auf den Senden-Button geschaut werden ob in der Checkbox ein Haken ist oder nicht, und dann je nachdem in Spalte 13 eine "1" oder eine "2" stehen..
Aber leider klappt nicht einmal der "kostenlose" Teil

Bild

Betrifft: AW: Visual Basic Checkbox auslesen
von: Rudi Maintaire
Geschrieben am: 24.09.2015 10:46:51
Hallo,

If Label10.visible then  'Checkbox nicht sichtbar
  cells(a,13)="kostenlos"
else
  cells(a,13)=checkbox1+2   'angehakt=True (-1), abgehakt=False (0) -1+2=1; 0+2=2
end if
Was klappt nicht?
Gruß
Rudi

Bild

Betrifft: AW: Visual Basic Checkbox auslesen
von: Jana
Geschrieben am: 24.09.2015 10:56:54
"1" und "2" waren nur Beispiele...
Tut mir leid, aber da hab ich wohl nicht richtig drüber nachgedacht beim Schreiben meines Textes. Eigentlich sollen da Texte rauskommen, wenn angehakt sagen wir "angehakt" wenn nicht "nicht angehakt"
Schonmal DANKE für deine Hilfe!

Bild

Betrifft: ja dann
von: Rudi Maintaire
Geschrieben am: 24.09.2015 11:04:03
warum nicht gleich korrekt?

If Label10.visible then  'Checkbox nicht sichtbar
  cells(a,13)="kostenlos"
else
  cells(a,13)=Array("angehakt","abgehakt")(checkbox1+1)   
end if

oder
If Label10.visible then
  cells(a,13)="kostenlos"
else
  if checkbox1 then
    cells(a,13)= "angehakt"
  else
    cells(a,13)= "abgehakt"
  end if   
end if
Gruß
Rudi

Bild

Betrifft: AW: ja dann
von: Jana
Geschrieben am: 24.09.2015 11:24:33
Ich habe jetzt den Code noch etwas umgestellt:
Erst der Part:
If IsNumeric(Me.TextBox1.Value) And IsDate(Me.TextBox9.Value) And ComboBox1.Value = "abc"
Then
.
.
.
Cells(a, 13) = "kostenlos"
Dann der:
If IsNumeric(Me.TextBox1.Value) And IsDate(Me.TextBox9.Value) And ComboBox1.Value <> "abc"
Then
.
.
.
If Label10.Visible Then
Cells(a, 13) = "kostenlos"
Else
If CheckBox1 Then
Cells(a, 13) = "angehakt"
Else
Cells(a, 13) = "abgehakt"
End If
.
.
.
Vorher hatte er die Checkbox eben nur auslesen können, wenn in der combobox "abc" ausgewählt wurde.
Jetzt passt es!
Vielen Dank!!!


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Visual Basic Checkbox auslesen"