Verstehe ich.
Nur leider bin ich nicht so der versierte Programmiere in VBA, als das ich verschiedene Kode ausprobieren könnte, geschweige überhaupt einen intelligenten Ablauf hinzubekommen.
Ich habe folgenden Quelltext in einem Modul:
Sub Januar()
Dim z As Long 'Zeile
Dim honorare As Long '4181 Honorare
Dim fahrt As Long '4000 TN_Fahrt u. Reisek.
Dim mittel As Long '4010 TN_Lehr-u. Lernmittel
Dim kleidung As Long '4020 TN Berufskleid.
Dim bewirtung As Long '4050 TN Bewirtung
Dim pädagogisch As Long '4060 TN Pädag. Sonderm.
Dim transport As Long '4781 Transport- kosten
Dim porto As Long '4910 Porto- Post-gebühren
Dim büro As Long '4930 Büro- Verwaltungs-bedarf
Dim bücher As Long '4940 Bücher Zeitschriften
With Worksheets("Januar")
For z = .Range("H500").End(xlUp).Row To 4 Step -1
If .Cells(z, 8) = Worksheets("Jahresübersicht").Range("A24") Then
Select Case .Cells(z, 6)
Case 4181: honorare = honorare + .Cells(z, 7)
Case 4000: fahrt = fahrt + .Cells(z, 7)
Case 4010: mittel = mittel + .Cells(z, 7)
Case 4020: kleidung = kleidung + .Cells(z, 7)
Case 4050: bewirtung = bewirtung + .Cells(z, 7)
Case 4060: pädagogisch = pädagogisch + .Cells(z, 7)
Case 4781: transport = transport + .Cells(z, 7)
Case 4910: porto = porto + .Cells(z, 7)
Case 4930: büro = büro + .Cells(z, 7)
Case 4940: bücher = bücher + .Cells(z, 7)
End Select
End If
Next
End With
With Worksheets("Jahresübersicht")
.Range("B26") = honorare
.Range("C26") = fahrt
.Range("d26") = mittel
.Range("e26") = kleidung
.Range("f26") = bewirtung
.Range("g26") = pädagogisch
.Range("h26") = transport
.Range("i26") = porto
.Range("j26") = büro
.Range("k26") = bücher
End With
honorare = 0
fahrt = 0
mittel = 0
kleidung = 0
bewirtung = 0
pädagogisch = 0
transport = 0
porto = 0
büro = 0
bücher = 0
With Worksheets("Januar")
For z = .Range("H500").End(xlUp).Row To 4 Step -1
If .Cells(z, 8) = Worksheets("Jahresübersicht").Range("A42") Then
Select Case .Cells(z, 6)
Case 4181: honorare = honorare + .Cells(z, 7)
Case 4000: fahrt = fahrt + .Cells(z, 7)
Case 4010: mittel = mittel + .Cells(z, 7)
Case 4020: kleidung = kleidung + .Cells(z, 7)
Case 4050: bewirtung = bewirtung + .Cells(z, 7)
Case 4060: pädagogisch = pädagogisch + .Cells(z, 7)
Case 4781: transport = transport + .Cells(z, 7)
Case 4910: porto = porto + .Cells(z, 7)
Case 4930: büro = büro + .Cells(z, 7)
Case 4940: bücher = bücher + .Cells(z, 7)
End Select
End If
Next
End With
With Worksheets("Jahresübersicht")
.Range("B44") = honorare
.Range("C44") = fahrt
.Range("d44") = mittel
.Range("e44") = kleidung
.Range("f44") = bewirtung
.Range("g44") = pädagogisch
.Range("h44") = transport
.Range("i44") = porto
.Range("j44") = büro
.Range("k44") = bücher
End With
honorare = 0
fahrt = 0
mittel = 0
kleidung = 0
bewirtung = 0
pädagogisch = 0
transport = 0
porto = 0
büro = 0
bücher = 0
With Worksheets("Januar")
For z = .Range("H500").End(xlUp).Row To 4 Step -1
If .Cells(z, 8) = Worksheets("Jahresübersicht").Range("A60") Then
Select Case .Cells(z, 6)
Case 4181: honorare = honorare + .Cells(z, 7)
Case 4000: fahrt = fahrt + .Cells(z, 7)
Case 4010: mittel = mittel + .Cells(z, 7)
Case 4020: kleidung = kleidung + .Cells(z, 7)
Case 4050: bewirtung = bewirtung + .Cells(z, 7)
Case 4060: pädagogisch = pädagogisch + .Cells(z, 7)
Case 4781: transport = transport + .Cells(z, 7)
Case 4910: porto = porto + .Cells(z, 7)
Case 4930: büro = büro + .Cells(z, 7)
Case 4940: bücher = bücher + .Cells(z, 7)
End Select
End If
Next
End With
With Worksheets("Jahresübersicht")
.Range("B62") = honorare
.Range("C62") = fahrt
.Range("d62") = mittel
.Range("e62") = kleidung
.Range("f62") = bewirtung
.Range("g62") = pädagogisch
.Range("h62") = transport
.Range("i62") = porto
.Range("j62") = büro
.Range("k62") = bücher
End With
honorare = 0
fahrt = 0
mittel = 0
kleidung = 0
bewirtung = 0
pädagogisch = 0
transport = 0
porto = 0
büro = 0
bücher = 0
With Worksheets("Januar")
For z = .Range("H500").End(xlUp).Row To 4 Step -1
If .Cells(z, 8) = Worksheets("Jahresübersicht").Range("A78") Then
Select Case .Cells(z, 6)
Case 4181: honorare = honorare + .Cells(z, 7)
Case 4000: fahrt = fahrt + .Cells(z, 7)
Case 4010: mittel = mittel + .Cells(z, 7)
Case 4020: kleidung = kleidung + .Cells(z, 7)
Case 4050: bewirtung = bewirtung + .Cells(z, 7)
Case 4060: pädagogisch = pädagogisch + .Cells(z, 7)
Case 4781: transport = transport + .Cells(z, 7)
Case 4910: porto = porto + .Cells(z, 7)
Case 4930: büro = büro + .Cells(z, 7)
Case 4940: bücher = bücher + .Cells(z, 7)
End Select
End If
Next
End With
With Worksheets("Jahresübersicht")
.Range("B80") = honorare
.Range("C80") = fahrt
.Range("d80") = mittel
.Range("e80") = kleidung
.Range("f80") = bewirtung
.Range("g80") = pädagogisch
.Range("h80") = transport
.Range("i80") = porto
.Range("j80") = büro
.Range("k80") = bücher
End With
honorare = 0
fahrt = 0
mittel = 0
kleidung = 0
bewirtung = 0
pädagogisch = 0
transport = 0
porto = 0
büro = 0
bücher = 0
With Worksheets("Januar")
For z = .Range("H500").End(xlUp).Row To 4 Step -1
If .Cells(z, 8) = Worksheets("Jahresübersicht").Range("A96") Then
Select Case .Cells(z, 6)
Case 4181: honorare = honorare + .Cells(z, 7)
Case 4000: fahrt = fahrt + .Cells(z, 7)
Case 4010: mittel = mittel + .Cells(z, 7)
Case 4020: kleidung = kleidung + .Cells(z, 7)
Case 4050: bewirtung = bewirtung + .Cells(z, 7)
Case 4060: pädagogisch = pädagogisch + .Cells(z, 7)
Case 4781: transport = transport + .Cells(z, 7)
Case 4910: porto = porto + .Cells(z, 7)
Case 4930: büro = büro + .Cells(z, 7)
Case 4940: bücher = bücher + .Cells(z, 7)
End Select
End If
Next
End With
With Worksheets("Jahresübersicht")
.Range("B98") = honorare
.Range("C98") = fahrt
.Range("d98") = mittel
.Range("e98") = kleidung
.Range("f98") = bewirtung
.Range("g98") = pädagogisch
.Range("h98") = transport
.Range("i98") = porto
.Range("j98") = büro
.Range("k98") = bücher
End With
honorare = 0
fahrt = 0
mittel = 0
kleidung = 0
bewirtung = 0
pädagogisch = 0
transport = 0
porto = 0
büro = 0
bücher = 0
With Worksheets("Januar")
For z = .Range("H500").End(xlUp).Row To 4 Step -1
If .Cells(z, 8) = Worksheets("Jahresübersicht").Range("A114") Then
Select Case .Cells(z, 6)
Case 4181: honorare = honorare + .Cells(z, 7)
Case 4000: fahrt = fahrt + .Cells(z, 7)
Case 4010: mittel = mittel + .Cells(z, 7)
Case 4020: kleidung = kleidung + .Cells(z, 7)
Case 4050: bewirtung = bewirtung + .Cells(z, 7)
Case 4060: pädagogisch = pädagogisch + .Cells(z, 7)
Case 4781: transport = transport + .Cells(z, 7)
Case 4910: porto = porto + .Cells(z, 7)
Case 4930: büro = büro + .Cells(z, 7)
Case 4940: bücher = bücher + .Cells(z, 7)
End Select
End If
Next
End With
With Worksheets("Jahresübersicht")
.Range("B116") = honorare
.Range("C116") = fahrt
.Range("d116") = mittel
.Range("e116") = kleidung
.Range("f116") = bewirtung
.Range("g116") = pädagogisch
.Range("h116") = transport
.Range("i116") = porto
.Range("j116") = büro
.Range("k116") = bücher
End With
honorare = 0
fahrt = 0
mittel = 0
kleidung = 0
bewirtung = 0
pädagogisch = 0
transport = 0
porto = 0
büro = 0
bücher = 0
End Sub
Dieser Quelltext liegt in zwölf Modulen. Es ist immer der gleiche Ablauf, bis auf die Namensgebung. In jedem Modul liegt ein Monat. Diese ganzen Module werden mit einem Buttonklick ausgeführt. Und je nach CPU-Stärke dauert dieser Ablauf recht lange.
Wo könnte ich denn hier am besten ansetzen, diesen Code intelligenter zu gestalten?