Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema SpinButton
BildScreenshot zu SpinButton SpinButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Userform If-schleife Optionbutton und listbox


Betrifft: Userform If-schleife Optionbutton und listbox von: Marion
Geschrieben am: 11.03.2018 17:45:58

Hallo liebes Herber-Forum,
ich habe einen code für eine userform aus dem Internet und wollte diesen für meine Bedürfnisse abändern.

UserForm_Initialize sieht wie folgt aus.

Private Sub UserForm_Initialize()

 

'Titel:

TextBox_Titel = "Buchtitel eingeben"

'Autor:

TextBox_Autor = "Autor eingeben"

'Kategorie:

With ListBox_Kategorie

    .AddItem "Krimi"

    .AddItem "Thriller"

    .AddItem "Liebesroman"

    .AddItem "Historischer Roman"

    .AddItem "Sachbuch"

    .AddItem "Fantasy"

    .AddItem "..."

End With

'Jahr:

    Dim i As Integer

    With ComboBox_Jahr

        For i = 1900 To 2017

            .AddItem CStr(i)

        Next

    End With

'Auflage:

SpinButton_Auflage.Min = 1

SpinButton_Auflage.Value = 1

TextBox_Auflage.Text = SpinButton_Auflage.Value

'Sprache:

CheckBox_Deutsch.Value = False

CheckBox_Englisch.Value = False

'Format:

OptionButton1.Value = True

Der CommandButton der dafür sorgt das die Daten von der Userform in das Vorhandene sheet eingetragen werden sieht so aus:


Private Sub Button_Eingabe_Click()

 

'Erste freie Zeile ausfindig machen

Dim last As Integer

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

'Titel:

Cells(last, 1).Value = TextBox_Titel

'Autor:

Cells(last, 2).Value = TextBox_Autor

'Kategorie:

Cells(last, 3).Value = ListBox_Kategorie.Value

'Jahr:

Cells(last, 4).Value = ComboBox_Jahr

'Auflage:

Cells(last, 5).Value = TextBox_Auflage.Value

'Sprache:

If CheckBox_Deutsch.Value = True Then Cells(last, 6).Value = CheckBox_Deutsch.Caption

If CheckBox_Englisch.Value = True Then Cells(last, 6).Value = Cells(last, 6).Value & " ," &  _
CheckBox_Englisch.Caption

'Format:

If OptionButton1.Value = True Then Cells(last, 7).Value = "Buch"

If OptionButton2.Value = True Then Cells(last, 7).Value = "EBook"



 

End Sub

Soweit so gut... Jetzt wollte ich dass die Daten in verschiedene sheets eingetragen werden wenn.
Und zwar nach den Kategorien der OptionButtons "Buch" oder "Ebook" und dazu in abhängigkeit zu ListBox_Kategorie. Und dann im passenden sheet jeweils in die nächste freie Zeile.
Die Namen der vorhanden sheets setzen sich auch aus dem wert des OprionButtons und der Kategorie zusammen zB. "Buch_Krimi", "Buch_Thriller"

Ich habe es bereits versucht aber es wird sehr umständlich und unübersichtlich, desweitern wird immer nur die nächste freie Zeile des Activesheet gesucht und nicht die, in dem sheet wo die Daten eingetragen werden sollen.

Private Sub Button_Eingabe_Click()

 

'Erste freie Zeile ausfindig machen

Dim last As Integer

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

If OptionButton1.Value = True and ListBox_Kategorie.Value = "Krimi" Then worksheets("Buch_Krimi" _
).Cells(last,1).Value = TextBox_Titel

If OptionButton1.Value = True and ListBox_Kategorie.Value = "Thriller" Then worksheets(" _
Buch_Thriller").Cells(last,1).Value = TextBox_Titel

If OptionButton2.Value = True Then Cells(last, 7).Value = "EBook"

If OptionButton3.Value = True Then Cells(last, 7).Value = "Hörbuch"

'Titel:

Cells(last, 1).Value = TextBox_Titel

'Autor:

Cells(last, 2).Value = TextBox_Autor

'Kategorie:

Cells(last, 3).Value = ListBox_Kategorie.Value

'Jahr:

Cells(last, 4).Value = ComboBox_Jahr

'Auflage:

Cells(last, 5).Value = TextBox_Auflage.Value

'Sprache:

If CheckBox_Deutsch.Value = True Then Cells(last, 6).Value = CheckBox_Deutsch.Caption

If CheckBox_Englisch.Value = True Then Cells(last, 6).Value = Cells(last, 6).Value & " ," &  _
CheckBox_Englisch.Caption



 

End Sub

Ich hoffe Ihr könnt mir helfen!
Viele Dank und liebe Grüße

  

Betrifft: AW: Userform If-schleife Optionbutton und listbox von: Nepumuk
Geschrieben am: 11.03.2018 18:19:58

Hallo Marion,

teste mal:

Private Sub Button_Eingabe_Click()
    
    Dim last As Long
    Dim ws As Worksheet
    
    If OptionButton1.Value And ListBox_Kategorie.Value = "Krimi" Then
        Set ws = Worksheets("Buch_Krimi")
        With ws
            last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        End With
    End If
    
    If OptionButton1.Value And ListBox_Kategorie.Value = "Thriller" Then
        Set ws = Worksheets("Buch_Thriller")
        With ws
            last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        End With
    End If
    
    If OptionButton2.Value Then ws.Cells(last, 7).Value = "EBook"
    
    If OptionButton3.Value Then ws.Cells(last, 7).Value = "Hörbuch"
    
    'Titel:
    
    ws.Cells(last, 1).Value = TextBox_Titel.Text
    
    'Autor:
    
    ws.Cells(last, 2).Value = TextBox_Autor.Text
    
    'Kategorie:
    
    ws.Cells(last, 3).Value = ListBox_Kategorie.Value
    
    'Jahr:
    
    ws.Cells(last, 4).Value = ComboBox_Jahr.Text
    
    'Auflage:
    
    ws.Cells(last, 5).Value = TextBox_Auflage.Value
    
    'Sprache:
    
    If CheckBox_Deutsch.Value Then ws.Cells(last, 6).Value = CheckBox_Deutsch.Caption
    
    If CheckBox_Englisch.Value Then ws.Cells(last, 6).Value = _
        ws.Cells(last, 6).Value & " ," & CheckBox_Englisch.Caption
    
    Set ws = Nothing
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Userform If-schleife Optionbutton und listbox von: Marion
Geschrieben am: 11.03.2018 22:12:42

Super, danke für die antwort! Aber jetzt fehlen ja noch die ganzen anderen möglichkeiten. Gibt es hierfür eine Lösung mit variablen.
Wenn man jede möglichkeit aufschreiben muss ist der code ja doch sehr lang.


  

Betrifft: AW: Userform If-schleife Optionbutton und listbox von: Nepumuk
Geschrieben am: 12.03.2018 08:02:35

Hallo Marion,

so kurz genug?

Private Sub Button_Eingabe_Click()
    
    Dim last As Long
    Dim ws As Worksheet
    
    If OptionButton1.Value Then
        If ListBox_Kategorie.ListIndex >= 0 Then
            
            Set ws = Worksheets("Buch_") & ListBox_Kategorie.Text
            
            With ws
                
                last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                
                If OptionButton2.Value Then .Cells(last, 7).Value = "EBook"
                
                If OptionButton3.Value Then .Cells(last, 7).Value = "Hörbuch"
                
                'Titel:
                
                .Cells(last, 1).Value = TextBox_Titel.Text
                
                'Autor:
                
                .Cells(last, 2).Value = TextBox_Autor.Text
                
                'Kategorie:
                
                .Cells(last, 3).Value = ListBox_Kategorie.Value
                
                'Jahr:
                
                .Cells(last, 4).Value = ComboBox_Jahr.Text
                
                'Auflage:
                
                .Cells(last, 5).Value = TextBox_Auflage.Value
                
                'Sprache:
                
                If CheckBox_Deutsch.Value Then .Cells(last, 6).Value = CheckBox_Deutsch.Caption
                
                If CheckBox_Englisch.Value Then .Cells(last, 6).Value = _
                    .Cells(last, 6).Value & " ," & CheckBox_Englisch.Caption
                
            End With
            
            Set ws = Nothing
            
        End If
    End If
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Userform If-schleife Optionbutton und listbox von: Nepumuk
Geschrieben am: 12.03.2018 08:58:40

Oooooooooooops,

da ist ein Fehler drin. So natürlich:

Set ws = Worksheets("Buch_" & ListBox_Kategorie.Text)
Gruß
Nepumuk


  

Betrifft: AW: Userform If-schleife Optionbutton und listbox von: snb
Geschrieben am: 12.03.2018 23:10:41

Eine 1-Zeiler reicht:

Private Sub Button_Eingabe_Click()
  If OptionButton1.Value and ListBox_Kategorie.ListIndex >-1 Then sheets("Buch_").Cells(Rows. _
Count, 1).End(xlUp).offset(1).resize(,7)=array(TextBox_Titel,TextBox_Autor,ListBox_Kategorie,ComboBox_Jahr,TextBox_Auflage,iif(CheckBox_Deutsch,CheckBox_Deutsch,CheckBox_Englisch),iif(OptionButton2,"EBook","Hörbuch"))
End Sub



Beiträge aus dem Excel-Forum zum Thema "Userform If-schleife Optionbutton und listbox "