ich habe in einer Userform neben einer Liste von Personen mehrere TextBoxen für Artikel und ComboBoxen für die größen, dazu gibt es jeweils ein Label.
Benannt sind Label, TextBoxen und ComboBoxen immer gleich Art_Name also z.B. bei Kurze Hose - Label_KurzeHose, TextBox_KurzeHose, ComboBox_KurzeHose
In der Textbox wird die Stückzahl eingetragen, diese kann mittels SpinButton erhöht werden, in der ComboBox sind die Größen gelistet.
Bisher hat dieser Code super funktioniert
Dim Ausgang As Worksheet
Dim tbox
Set Ausgang = Worksheets("Ausgang")
For Each tbox In Me.Controls
If left(tbox.Name, 4) = "Text" Then
If (tbox.Text "" And tbox.Text 0) Then
With Worksheets("Ausgang").Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = TexBo_Datum.Value
.Offset(1, 1).Value = Mid(tbox.Name, 9)
.Offset(1, 2).Value = Me.Controls(Replace(tbox.Name, "Text", "Combo")).Text
.Offset(1, 3).Value = tbox.Text
.Offset(1, 4).Value = ListBox_Fahrer.List(ListBox_Fahrer.ListIndex, 1) & ", " & _
ListBox_Fahrer.List(ListBox_Fahrer.ListIndex, 2)
End With
End If
End If
Next
Nun musste ich Artikel mit einfügen die keine größe haben und dementsprechend auch keine ComboBox zugeordnet haben.Mit meinen bescheidenen VBA kentnissen wollte ich erweitern mit
Dim Ausgang As Worksheet
Dim tbox
Dim cbox
Set Ausgang = Worksheets("Ausgang")
For Each tbox In Me.Controls
For Each cbox In Me.Controls
If TypeName(tbox) = "TextBox" And TypeName(cbox) = "ComboBox" Then
If tbox.Name = cbox.Name Then
If (tbox.Text "" And tbox.Text 0) And (cbox.Value >= 0) Then
With Worksheets("Ausgang").Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = TexBo_Datum.Value
.Offset(1, 1).Value = Mid(tbox.Name, 9)
.Offset(1, 2).Value = cbox.Text
.Offset(1, 3).Value = tbox.Text
.Offset(1, 4).Value = ListBox_Fahrer.List(ListBox_Fahrer.ListIndex, 1) & ", " & _
ListBox_Fahrer.List(ListBox_Fahrer.ListIndex, 2)
End With
End If
End If
If cbox.Value >= 0 Then
With Worksheets("Ausgang").Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = TexBo_Datum.Value
.Offset(1, 1).Value = Mid(tbox.Name, 9)
.Offset(1, 3).Value = tbox.Text
.Offset(1, 4).Value = ListBox_Fahrer.List(ListBox_Fahrer.ListIndex, 1) & ", " & _
ListBox_Fahrer.List(ListBox_Fahrer.ListIndex, 2)
End With
End If
End If
Next
Next
Dieser führt aber leider nicht zum Erfolg. Nun wird jeder artikel in jeder möglichen Größe mit dem ausgewählten Namen in die Tabelle eingetragen, Allerdings bleiben Stück und Größe leer wenn nichts eingetragen wurde. Wenn was eingetragen wurde werden Größe und Stückzahl auch übernommen das allerdings 5 mal für die 5 möglichen größen. Erstellt also für jede mögliche Größe eine Zeile.Bei anderen Versuchen passiert nichts, bekomme allerdings auch keine Debugg meldung.
Hätte auch versucht mittels Dim tbox\cbox As Object die Variable zu definieren, blieb allerdings daran hängen wie ich hier die Typen zuordnen kann. Die Idee dahinter war das ich in einer If abfrage ob es eine ComboBox mit dem gleichen Namen gibt wie eine TextBox.
Vielleicht kann mir hier ja ein Profi helfen das Problem zu lösen. Und so nebenbei wenn ich noch einen Tipp bekomme wie ich eine Textbox machen kann die nur positive Zahlen erlaubt wäre ich nicht undankbar.
Vielen Dank schonmal im Vorraus und Grüße
Matthias
PS: Ich stelle immer viele dumme fragen, aus interesse nicht zwingend aus unvermögen.