07.12.2017, 10:25
Hallo mal wieder in die liebe Forenrunde,
heute hätte ich mal eine Frage bzgl. eines funktionieren VBA Codes. Mit unten stehen Code übertrage ich Kunden- / Lieferantenrechnungen in eine Umsatzliste. Mittlerweile haben sich ca. 2000 Zeilen Umsätze angesammelt.
Beim Klick auf "Speichern" in meiner Userform dauert es immer ein paar Sekunden bis die jeweiligen Daten übertragen werden.
Liegt dies an der Menge der Umsätze oder kann ich folgenden Code verkürzen / beschleunigen?
Vielen Dank für eure Hilfe!
Schöne Grüße
Thomas
heute hätte ich mal eine Frage bzgl. eines funktionieren VBA Codes. Mit unten stehen Code übertrage ich Kunden- / Lieferantenrechnungen in eine Umsatzliste. Mittlerweile haben sich ca. 2000 Zeilen Umsätze angesammelt.
Beim Klick auf "Speichern" in meiner Userform dauert es immer ein paar Sekunden bis die jeweiligen Daten übertragen werden.
Liegt dies an der Menge der Umsätze oder kann ich folgenden Code verkürzen / beschleunigen?
Code:
Private Sub Speichern_Click()
Dim lngErste As Long
With Sheets("Umsätze")
' letzte freie Zeile in Spalte B finden
lngErste = Application.CountA(.Columns(2)) + 3
' jeweils prüfen ob Artikel ausgefüllt dann Übertrag
If ComboBox2.Value <> "" Then
.Range("B" & lngErste).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste).Value = CDate(Me.TextBox23.Value)
.Range("D" & lngErste).Value = ComboBox1.Value
.Range("E" & lngErste).Value = TextBox1.Value
.Range("F" & lngErste).Value = ComboBox2.Value
.Range("G" & lngErste).Value = CDbl(TextBox2)
End If
If TextBox12.Value <> "" Then
.Range("H" & lngErste).Value = CCur(TextBox12)
End If
If ComboBox3.Value <> "" Then
.Range("B" & lngErste + 1).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 1).Value = CDate(Me.TextBox24.Value)
.Range("D" & lngErste + 1).Value = ComboBox1.Value
.Range("E" & lngErste + 1).Value = TextBox1.Value
.Range("F" & lngErste + 1).Value = ComboBox3.Value
.Range("G" & lngErste + 1).Value = CDbl(TextBox3)
End If
If TextBox13.Value <> "" Then
.Range("H" & lngErste + 1).Value = CCur(TextBox13)
End If
If ComboBox4.Value <> "" Then
.Range("B" & lngErste + 2).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 2).Value = CDate(Me.TextBox25.Value)
.Range("D" & lngErste + 2).Value = ComboBox1.Value
.Range("E" & lngErste + 2).Value = TextBox1.Value
.Range("F" & lngErste + 2).Value = ComboBox4.Value
.Range("G" & lngErste + 2).Value = CDbl(TextBox4)
End If
If TextBox14.Value <> "" Then
.Range("H" & lngErste + 2).Value = CCur(TextBox14)
End If
If ComboBox5.Value <> "" Then
.Range("B" & lngErste + 3).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 3).Value = CDate(Me.TextBox26.Value)
.Range("D" & lngErste + 3).Value = ComboBox1.Value
.Range("E" & lngErste + 3).Value = TextBox1.Value
.Range("F" & lngErste + 3).Value = ComboBox5.Value
.Range("G" & lngErste + 3).Value = CDbl(TextBox5)
End If
If TextBox15.Value <> "" Then
.Range("H" & lngErste + 3).Value = CCur(TextBox15)
End If
If ComboBox6.Value <> "" Then
.Range("B" & lngErste + 4).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 4).Value = CDate(Me.TextBox27.Value)
.Range("D" & lngErste + 4).Value = ComboBox1.Value
.Range("E" & lngErste + 4).Value = TextBox1.Value
.Range("F" & lngErste + 4).Value = ComboBox6.Value
.Range("G" & lngErste + 4).Value = CDbl(TextBox6)
End If
If TextBox16.Value <> "" Then
.Range("H" & lngErste + 4).Value = CCur(TextBox16)
End If
If ComboBox7.Value <> "" Then
.Range("B" & lngErste + 5).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 5).Value = CDate(Me.TextBox28.Value)
.Range("D" & lngErste + 5).Value = ComboBox1.Value
.Range("E" & lngErste + 5).Value = TextBox1.Value
.Range("F" & lngErste + 5).Value = ComboBox7.Value
.Range("G" & lngErste + 5).Value = CDbl(TextBox7)
End If
If TextBox17.Value <> "" Then
.Range("H" & lngErste + 5).Value = CCur(TextBox17)
End If
If ComboBox8.Value <> "" Then
.Range("B" & lngErste + 6).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 6).Value = CDate(Me.TextBox29.Value)
.Range("D" & lngErste + 6).Value = ComboBox1.Value
.Range("E" & lngErste + 6).Value = TextBox1.Value
.Range("F" & lngErste + 6).Value = ComboBox8.Value
.Range("G" & lngErste + 6).Value = CDbl(TextBox8)
End If
If TextBox18.Value <> "" Then
.Range("H" & lngErste + 6).Value = CCur(TextBox18)
End If
If ComboBox9.Value <> "" Then
.Range("B" & lngErste + 7).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 7).Value = CDate(Me.TextBox30.Value)
.Range("D" & lngErste + 7).Value = ComboBox1.Value
.Range("E" & lngErste + 7).Value = TextBox1.Value
.Range("F" & lngErste + 7).Value = ComboBox9.Value
.Range("G" & lngErste + 7).Value = CDbl(TextBox9)
End If
If TextBox19.Value <> "" Then
.Range("H" & lngErste + 7).Value = CCur(TextBox19)
End If
If ComboBox10.Value <> "" Then
.Range("B" & lngErste + 8).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 8).Value = CDate(Me.TextBox31.Value)
.Range("D" & lngErste + 8).Value = ComboBox1.Value
.Range("E" & lngErste + 8).Value = TextBox1.Value
.Range("F" & lngErste + 8).Value = ComboBox10.Value
.Range("G" & lngErste + 8).Value = CDbl(TextBox10)
End If
If TextBox20.Value <> "" Then
.Range("H" & lngErste + 8).Value = CCur(TextBox20)
End If
If ComboBox11.Value <> "" Then
.Range("B" & lngErste + 9).Value = CDate(Me.TextBox22.Value)
.Range("C" & lngErste + 9).Value = CDate(Me.TextBox32.Value)
.Range("D" & lngErste + 9).Value = ComboBox1.Value
.Range("E" & lngErste + 9).Value = TextBox1.Value
.Range("F" & lngErste + 9).Value = ComboBox11.Value
.Range("G" & lngErste + 9).Value = CDbl(TextBox11)
End If
If TextBox21.Value <> "" Then
.Range("H" & lngErste + 9).Value = CCur(TextBox21)
End If
End With
Unload Me 'Userform leeren
UserForm1.Show 'Userform neu starten
'Tabelle Umsätze sortieren?
End Sub
Vielen Dank für eure Hilfe!
Schöne Grüße
Thomas