Excel mit VBA ListBox2 in Abhängigkeit von ListBox1 befüllen
#21
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
Top
#22
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.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#23
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#24
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)
Top
#25
Du hast vergessen einer der Optionbuttons zu wählen.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#26
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.
Top
#27
Dann solltest du diese Bedingung im Code einbauen.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#28
da fehlt mir der Ansatz wie ich dort eine Bedingung einbauen kann.

Cardio -> Interv1 - 6
Muskelaufbau -> Satz1 - 4
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste