Clever-Excel-Forum

Normale Version: Excel mit VBA ListBox2 in Abhängigkeit von ListBox1 befüllen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Ich habe es noch mal getestet und klappt alles so, wie es mir vorgestellt habe.

Ich habe jetzt ein bischen gebastest so das das VBA ausgeführt wird, wenn das Arbeitsblatt "Datenbank" geöffnet wird.
Und einen >Ende< Button eingefügt, womit das Arbeitsblatt dann auch gleich gespeichert wird und wieder auf das Arbeitsblatt "Trainingsplan"
gewechselt wird.

Gruß
Sveni_Lee
Das geht auch in VBA.
Diese Code reicht für Userform_Initialize

Code:
Private Sub UserForm_Initialize()
    ListBox_Muskelgruppe.Column = Tabelle9.Rows(1).SpecialCells(2).Value
    ComboBox_KW.List = [index(row(1:53),)]
    ListBox_Wochentag.List = Application.GetCustomListContents(2)
    ListBox_Training.List = Split("Muskelaufbau Cardio")
    ComboBox_Jahr.List = [index(row(2019:2025),)]
    ListBox_Uebung.List = Tabelle9.Cells(1).CurrentRegion.Offset(1).Value
End Sub

Und diese in Listbox Muskelgruppe Change:

Code:
Private Sub ListBox_Muskelgruppe_Change()
    ListBox_Uebung.ColumnCount = ListBox_Muskelgruppe.ListCount

    ReDim st(ListBox_Muskelgruppe.ListCount)
    st(ListBox_Muskelgruppe.ListIndex) = 12
    ListBox_Uebung.ColumnWidths =Join(st, "0;")
End Sub

Die Spinbutton Eigenschaften ( Min) sollte man im Design Mode einstellen.
Die komplette Code im Userform:


Code:
Private Sub UserForm_Initialize()
    ListBox_Muskelgruppe.Column = Tabelle9.Rows(1).SpecialCells(2).Value
    ComboBox_KW.List = [index(row(1:53),)]
    ListBox_Wochentag.List = Application.GetCustomListContents(2)
    ListBox_Training.List = Split("Muskelaufbau Cardio")
    ComboBox_Jahr.List = [index(row(2019:2025),)]
    ListBox_Uebung.List = Tabelle9.Cells(1).CurrentRegion.Offset(1).Value
End Sub


Code:
Private Sub ListBox_Muskelgruppe_Change()
    ListBox_Uebung.ColumnCount = ListBox_Muskelgruppe.ListCount
    ReDim st(ListBox_Muskelgruppe.ListCount)
    st(ListBox_Muskelgruppe.ListIndex) = 12
    c00 = Join(st, "0;")
    ListBox_Uebung.ColumnWidths = c00
End Sub


Code:
Private Sub SpinButton_Gewicht_Change()
  TextBox_Gewicht.Text = SpinButton_Gewicht.Value
End Sub


Code:
Private Sub SpinButton_Wdhlg_Change()
  TextBox_Wdhlg.Text = SpinButton_Wdhlg.Value
End Sub


Code:
Private Sub SpinButton_Zeit_Change()
  TextBox_Zeit.Text = SpinButton_Zeit.Value
End Sub


Code:
Private Sub Button_Eingabe_Click()
   sn = Array(ComboBox_KW, ListBox_Wochentag, , ListBox_Training, ListBox_Muskelgruppe, ListBox_Uebung, , TextBox_Gewicht, TextBox_Wdhlg, , TextBox_Strecke, TextBox_Zeit, ComboBox_Jahr)
    
   sn(2) = DateSerial(sn(12), 1, 4) - Weekday(DateSerial(sn(12), 1, 4), 2) + ListBox_Wochentag.ListIndex + 1 + 7 * sn(0)
   sn(6) = "Satz " & Application.Match(True, Array(OptionButton_Satz1, OptionButton_Satz2, OptionButton_Satz3, OptionButton_Satz4), 0)
   sn(9) = "Intervall " & Application.Match(True, Array(OptionButton_Interv1, OptionButton_Interv2, OptionButton_Interv3, OptionButton_Interv4, OptionButton_Interv5, OptionButton_Interv6), 0)
   
   Tabelle8.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 13) = sn
End Sub
danke...

ich hab es grad mal probiert
dabei bekomme ich eine Fehlermeldung "Typ unverträglich"


Code:
Private Sub Button_Eingabe_Click()
   sn = Array(ComboBox_KW, ListBox_Wochentag, , ListBox_Training, ListBox_Muskelgruppe, ListBox_Uebung, , TextBox_Gewicht, TextBox_Wdhlg, , TextBox_Strecke, TextBox_Zeit, ComboBox_Jahr)
    
   sn(2) = DateSerial(sn(12), 1, 4) - Weekday(DateSerial(sn(12), 1, 4), 2) + ListBox_Wochentag.ListIndex + 1 + 7 * sn(0)
   sn(6) = "Satz " & Application.Match(True, Array(OptionButton_Satz1, OptionButton_Satz2, OptionButton_Satz3, OptionButton_Satz4), 0)
   sn(9) = "Intervall " & Application.Match(True, Array(OptionButton_Interv1, OptionButton_Interv2, OptionButton_Interv3, OptionButton_Interv4, OptionButton_Interv5, OptionButton_Interv6), 0)
   
   Tabelle8.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 13) = sn
End Sub

und zwar in dieser Zeile:

Code:
sn(9) = "Intervall " & Application.Match(True, Array(OptionButton_Interv1, OptionButton_Interv2, OptionButton_Interv3, OptionButton_Interv4, OptionButton_Interv5, OptionButton_Interv6), 0)
Du hast vergessen einer der Optionbuttons zu wählen.
hmm...

Aber wenn ich die OptionButton_Satz1 - 4 wähle, sind die OptionButton_Interv1 - 6 obsolet da diese ja nur für das
Lauftrainung und nicht für den Muskelaufbau sind.
Dann solltest du diese Bedingung im Code einbauen.
da fehlt mir der Ansatz wie ich dort eine Bedingung einbauen kann.

Cardio -> Interv1 - 6
Muskelaufbau -> Satz1 - 4
Seiten: 1 2 3