Clever-Excel-Forum

Normale Version: For Schleife für Übertrag Combobox in Tabelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

neuer Tag, neue Frage...

Ich habe eine Userform mit 15 Comboxen, dann 15 DTPicker, dann nochmal 15 DTPicker und nochmal 15 Comboboxen:

Also Combobox 1          DTPicker1            DTPicker16            Combobox 16             und das ganze eben 15mal...

Mit folgendem Code habe ich die Werte der ersten Zeile übertragen:

Dim lngErste As Long
    With Sheets("Urlaubsplan")
    ' letzte freie Zeile in Spalte AW finden
    lngErste = Application.CountA(.Columns(49)) + 4
    ' jeweils prüfen ob Name ausgefüllt dann Übertrag
    If ComboBox1.Value <> "" Then
        .Range("AW" & lngErste).Value = ComboBox1.Value
        .Range("AX" & lngErste).Value = DTPicker1.Value
        .Range("AY" & lngErste).Value = DTPicker16.Value
        .Range("AZ" & lngErste).Value = ComboBox16.Value
    End If

Nun komm ich mit meinem Wissen allerdings nicht weiter wie ich das ganze mit einer Schleife so abändern kann dass er mir das für die 15 Einträge macht.

Ich weiss dass ich mit 

for i = 1 to 15
und dann das i irgendwie zu den jeweiligen Comboboxen und DTPickern hinzufügen muss, aber ich bekomms einfach nicht hin.

Kann mit hier jemand weiterhelfen?

Vielen Dank und schöne Grüße

Thomas
Hallo Thomas,

das geht mit der Controlsauflistung:
For i = 1 To 15
 Me.Controls("Combobox" & i)
 Me.Controls("DTPicker" & i)
 Me.Controls("DTPicker" & i + 15)
 Me.Controls("Combobox" & i + 15)
Next i
Gruß Uwe
Hallo Uwe,

danke für die Info. Habs jetzt folgendermaßen probiert:

Dim lngErste As Long
Dim i As Integer

    With Sheets("Urlaubsplan")
    ' letzte freie Zeile in Spalte AW finden
    lngErste = Application.CountA(.Columns(49)) + 4
    ' jeweils prüfen ob Mitarbeitername ausgefüllt dann Übertrag

    For i = 1 To 15
            If "ComboBox" & i <> "" Then
            .Range("AW" & lngErste).Value = Me.Controls("Combobox" & i)
            .Range("AX" & lngErste).Value = Me.Controls("DTPicker" & i)
            .Range("AY" & lngErste).Value = Me.Controls("DTPicker" & i + 15)
            .Range("AZ" & lngErste).Value = Me.Controls("Combobox" & i + 15)
    Next i
        
    End With
   
    End Sub


Dann kommt aber Fehler beim kompilieren : Next ohne for

bin ich komplett auf dem Holzweg? (wahrscheinlich schon...)

Schöne Grüße Thomas
Hi Thomas,

ioch würde vor das "Next i" erst mal ein "End If" einfügen.
Hallo Ralf,

ohje manchmal sieht man aber auch echt den Wald vor lauter Bäumen nicht.

Vielen Dank !

Schöne Grüße Thomas
Jetzt hab ich aber das Problem das er mir die Daten überschreibt.

Wenn ich nur einen Zeile in der Userform ausfülle übernimmt er die einwandfrei.
Wenn ich mehrere Zeilen in der Userform ausfülle übernimmt er mir nur die letzte.

Thomas

P.S. hat sich glaub ich erledigt:

Hab bei lngErste das +i vergessen

P.P.S

Nö das ist es auch noch nicht ganz
Hallo Thomas,

.Range("AW" & lngErste + i - 1).Value =

Der Ausdruck
If "ComboBox" & i <> "" Then
funktioniert bei Dir wirklich?

Gruß Uwe
Hallo Uwe,

ahh vielen Dank!

Ich habe das if auf 

If Me.Controls("ComboBox" & i) <> "" Then

abgeändert, so funktionierts.

Schöne Grüße Thomas