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