Code "schneller machen" ?
21.10.2021 01:21:46
Andreas
ich weiß, ich bin in Sachen VBA kein Raketenforscher, weshalb ich um eine kleine Unterstützung dankbar wäre. Mit Sicherheit kann man das auch anders lösen, ich selbst aber kenne mich nur damit aus, wie ich es konstruiert habe.
Mit nachfolgendem Code speichere ich aus einem Userform viele Felder wieder zurück ins Blatt. Hierzu ermittelt er mir zunächst die Zeile, in der der 20.01.2021 (BSP) und die dazugheörige Schicht steht. Er speichert dann in die einzelnen Spalten und Reihen die Werte, welche zuvor auf dem Userform in den Comboxen und Textboxen eingetragen wurden. Es funktioniert zwar, nur leider dauert mir das zu lange, bis er fertig ist.
Kann man das vielleicht bisschen beschleunigen?
Vielen Dank für die Hilfe.
Private Sub CommandButton1_Click()
Dim Schicht As String
Dim MatchReihe As Long
Dim lzeile As Long
Dim i As Long
If TabStripSchicht.Value = 0 Then Schicht = "Frühdienst"
If TabStripSchicht.Value = 1 Then Schicht = "Spätdienst"
If TabStripSchicht.Value = 2 Then Schicht = "Nachtdienst"
If TabStripSchicht.Value = 3 Then Schicht = "Zusatzdienst 1"
If TabStripSchicht.Value = 4 Then Schicht = "Zusatzdienst 2"
With Worksheets("Tagesnachweise")
lzeile = .Cells(Rows.Count, 4).End(xlUp).Row
For i = 5 To lzeile 'Step 10
If .Cells(i, 4).Value = "20.01.2021" And .Cells(i, 5).Value = Schicht Then Exit For
Next i
MatchReihe = i - 1
For i = 1 To 10
.Cells(MatchReihe + i, 7) = Me.Controls("Textbox" & i).Value
.Cells(MatchReihe + i, 8) = Me.Controls("ComboboxAbwesend" & i).Value
.Cells(MatchReihe + i, 9) = Me.Controls("Combobox" & i)
.Cells(MatchReihe + i, 10) = Me.Controls("Combobox" & i + 10)
.Cells(MatchReihe + i, 11) = Me.Controls("Combobox" & i + 20)
.Cells(MatchReihe + i, 12) = Me.Controls("Combobox" & i + 30)
.Cells(MatchReihe + i, 13) = Me.Controls("Combobox" & i + 40)
.Cells(MatchReihe + i, 14) = Me.Controls("Combobox" & i + 50)
.Cells(MatchReihe + i, 15) = Me.Controls("Combobox" & i + 60)
.Cells(MatchReihe + i, 16) = Me.Controls("Combobox" & i + 70)
.Cells(MatchReihe + i, 17) = Me.Controls("Combobox" & i + 80)
.Cells(MatchReihe + i, 18) = Me.Controls("Combobox" & i + 90)
.Cells(MatchReihe + i, 19) = Me.Controls("Combobox" & i + 100)
.Cells(MatchReihe + i, 20) = Me.Controls("Combobox" & i + 110)
.Cells(MatchReihe + i, 21) = Me.Controls("Combobox" & i + 120)
.Cells(MatchReihe + i, 22) = Me.Controls("Combobox" & i + 130)
Next i
End With
End Sub