'Hi, ich habe mir trotzdem mal die Mühe gemacht, diesen Wirrwarr zu 'entwursten', und den Code gleichmal etwas optimiert.
'Kannst Du so markieren, kopieren und im VBA Editor einfügen. Ich konnte natürlich nur visuell checken, da mir deine Worksheets nicht vorliegen.
'Ich hoffe das mir kein Grammatikfehler 'durch die Augen geschlüpft' ist.
>>> Gib dann mal bitte ein Feedback <<<
Sub Rechnung()
Dim ABC, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z As Integer 'Zähler ?????????
Dim Quelle As String 'Variable fuer Worksheet 1
Dim Ziel, fallig, zahlein As String 'Variable fuer Ziel Worksheet
Dim currentDate, datum As Date
'===========================================================================================> Definition der Sheets welche durchforstet werden
' Rows("2:801").delete 'Variable für Zeile "Z"; Beschriftung startet in Zeile 3 Z = 2
'===========================================================================================> Quellen durchlaufen
Anzahl_Quellen = 6 'Hier nur die Anzahl der Quellen angeben: In deinem Beispiel sind es 6 definierte Quellen
Ziel = "Forderungsübersicht"
For zähler = 1 To Anzahl_Quellen 'Da sich ansonsten in der Routine alles wiederholt, kann man es wunderbar mit einer For/Next-Schleife erschlagen.
Quelle = "A" + Trim(Str(zähler)) 'So wird bei jedem Durchlauf durch den Zähler die Quelle angepasst: "A" + "1" = "A1" >>> "A" + "2" = "A2" ... usw
'man kann eine Menge Code einsparen !
For A = 1 To 150
C = Worksheets(Quelle).Cells(A, 13).Value
D = Left(C, 1)
If D = "5" Then
Worksheets(Ziel).Cells(Z, 2).Value = Worksheets(Quelle).Cells(A, 13).Value 'Rechnungsnummer
Worksheets(Ziel).Cells(Z, 3).Value = Worksheets(Quelle).Cells(A, 2).Value 'Shipment
If Worksheets(Quelle).Cells(A, 16).Value = "Delivery Payment" Then
Worksheets(Ziel).Cells(Z, 4).Value = Worksheets(Quelle).Cells(A, 8).Value
ElseIf Worksheets(Quelle).Cells(A, 16).Value = "Final Payment" Then
Worksheets(Ziel).Cells(Z, 4).Value = Worksheets(Quelle).Cells(A, 6).Value
End If
Worksheets(Ziel).Cells(Z, 5).Value = Worksheets(Quelle).Cells(A, 4).Value 'Rechnungsdatum
Worksheets(Ziel).Cells(Z, 6).Value = Worksheets(Quelle).Cells(A, 12).Value 'Fälligkeitsdatum
Worksheets(Ziel).Cells(Z, 7).Value = Worksheets(Quelle).Cells(A, 11).Value 'Zahlungseingang
Worksheets(Ziel).Cells(Z, 8).Value = Worksheets(Quelle).Cells(A, 16).Value
Z = Z + 1
End If
Next A
Next zähler
'===========================================================================================> RestCode abarbeiten ===> Datum & Betrag Check!
P = 0 'P werden die Summe von allen offenen Beträgen
Q = 0 'Q wird die Summe von allen offenen und fälligen Beträgen
For D = 2 To Z
datum = Worksheets(Ziel).Cells(D, 6).Value
fallig = Worksheets(Ziel).Cells(D, 6).Value
zahlein = Worksheets(Ziel).Cells(D, 7).Value
Cells(D, 2).HorizontalAlignment = xlCenter 'Zentriert die 500xxx Nummer
Cells(D, 3).HorizontalAlignment = xlCenter 'Zentriert die Shipment
Cells(D, 4).Style = "Currency" 'Formatiert die Zahl wie gewünscht
If datum <= Date And zahlein = "" And fallig <> "" Then
Q = Q + Worksheets(Ziel).Cells(D, 4).Value
Cells(D, 6).Interior.Color = RGB(226, 166, 200) 'farbe in RGB format suchen und anpassen bei bedarf
Cells(D, 6).Font.Bold = True 'macht im falle dass die Zahlung fällig ist die schrift das datums fett
If fallig <> "" Then
Worksheets(Ziel).Cells(D, 9).Value = Date - datum
Cells(D, 9).Font.Bold = True 'macht im falle dass die Zahlung fällig ist die schrift die anzahl der tage seitdem es überfällig ist fett
Worksheets(Ziel).Cells(D, 10).Value = "Tagen"
Cells(D, 10).Font.Bold = True 'macht im falle dass die Zahlung fällig ist die schrift des wortes "Tagen" fett
End If
ElseIf Worksheets(Ziel).Cells(D, 4).Value <> "" And zahlein = "" Then
P = Worksheets(Ziel).Cells(D, 4).Value + P
End If
Next D
P = P + Q
Worksheets(Ziel).Cells(3, 12).Value = Q
Worksheets(Ziel).Cells(4, 12).Value = P
Worksheets(Ziel).Cells(3, 11).Value = "Summe offene und fällige Beträge" 'einfach nur eine zellenbeschriftung
Worksheets(Ziel).Cells(4, 11).Value = "Summe offene Beträge" 'einfach nur eine zellenbeschriftung
Worksheets(Ziel).Cells(3, 12).Style = "Currency" 'formatiert die Zahl entsprechend nach currency um
Worksheets(Ziel).Cells(4, 12).Style = "Currency" 'formatiert die Zahl entsprechend nach currency um
Range(Cells(3, 11), Cells(4, 12)).Borders.LineStyle = xlcontinous 'alle zellen im angabe bereich werden mit durchgehenden trennlinien versehen
Range(Cells(3, 11), Cells(4, 12)).Borders.Weight = xlThin 'alle zellen im angabe bereich werden mit dünnen trennlinien versehen
Range(Cells(3, 11), Cells(4, 12)).BorderAround Weight:=xlThick 'alle 4 Zellen werden mit einem dicken rahmen versehen
Range(Cells(3, 11), Cells(4, 12)).Interior.Color = RGB(226, 166, 200) 'der betroffene bereich wird entsprechend farblich eingefärbt
Range(Cells(3, 11), Cells(4, 12)).Font.Bold = True 'der betroffene Bereich wird auf "fett" formatiert
End Sub
|