Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
296to300
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
296to300
296to300
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Rechnungsverwaltung

Rechnungsverwaltung
21.08.2003 11:07:05
Matthias
Hallo!
Ich möchte für meine kleine Firma ein Excel-Sheet machen, um meine Rechnungen zu verwalten.
Ich habe bereits erreicht, dass die Zeilen rot werden, wenn der erwartete Zahlungseingang verstrichen ist.
Nun hätte ich aber ganz gern, dass
a) die Rechnungen immer automatisch nach erwartetem Zahlungseingang sortiert werden, so dass oben die älteste Rechnung steht
b) wenn ich ein Datum in die Spalte "bezahlt am" eintrage, diese Zeile gelöscht und in ein anderes Datenblatt zum Archivieren verschoben wird. Wie dort die Sortierung ist, ist egal, am besten wäre es aber nach Rechnungsnummer, da die bei mir fortlaufend sind.
Ich hoffe, es kann mir jemand helfen, ansonsten muss ich es halt immer manuell machen ;-)
Viele Grüße,
Matthias

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ohne vba nein --
21.08.2003 12:24:34
andreas e
hallo matthias,
da wirst ohne vba nicht ganz klarkommen -
die schaltfläche sortieren könntest dir evtl. noch über den makrorecorder aufzeichnen -
da du jedoch schreibst, vba nein - habe ich da so meine bedenken.
Gruß
andreas e
http://www.skripteundaufgaben.de
viele kostenlose downloads zu excel und mehr

AW: Rechnungsverwaltung
21.08.2003 12:35:54
Matthias
Hallo Andreas!
Ich habe jetzt noch ein wenig in Foren gestöbert und einen VBA-Code für mein Sortierungsproblem gefunden. Der funktioniert auch einwandfrei.
Mit VBA-nein meinte ich auch nur, dass ich es nicht selber programmiern kann. Was ich mit so einem Code anfangen muss, weiß ich schon. :-)
Also werde ich mal weiter in Foren stöbern, und schauen, ob jemand schonmal so ein Problem mit dem Übertragen von Zeileninhalten hatte, und vielleicht sogar einen Code freigestellt hat. Ansonsten hilft halt nur das kurze alte Strg+X / Strg+V - Verfahren ;-)
Viele Grüße,
Matthias

Anzeige
AW: Rechnungsverwaltung
21.08.2003 13:23:14
Beni
Hallo Matthias,
kopiere diesen Code in das Modul der entsprechenden Tabelle
und passe den Code dem entsprechen an.
Gruss Beni
a)

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim Letzte As Long
With Worksheets("Tabelle6") 'Tabellenname anpassen
Letzte = .Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:D" & Letzte).Select 'D = rechte Spalte, anpassen
End With
'D2 = sortierte Spalte, anpassen
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

b)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim lRow As Long
With Worksheets("Tabelle2") 'Tabellenname anpassen
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Cells(Target.Row, 1) 'für jede Spalte eine Zeile
.Cells(lRow, 2).Value = Cells(Target.Row, 2) 'anpassen
.Cells(lRow, 3).Value = Cells(Target.Row, 3)
.Cells(lRow, 4).Value = Cells(Target.Row, 4)
.Cells(lRow, 5).Value = Cells(Target.Row, 5)
.Cells(lRow, 6).Value = Cells(Target.Row, 6)
.Cells(lRow, 7).Value = Cells(Target.Row, 7)
.Cells(lRow, 8).Value = Cells(Target.Row, 8)
End With
Selection.EntireRow.Delete
End Sub


Anzeige
AW: Rechnungsverwaltung
21.08.2003 13:38:08
Matthias
Hallo Beni!
Danke für den Code, aber ich glaube, dass ich das falsch umprogrammiert habe.
Hier mein Tabellen-Aufbau:
In Tabelle "Rechnungen offen" stehen ab der Zeile 6 und Spalte B die Daten. Das Datum der Bezahlung steht in der letzten Spalte (G).
Machen wir es an einem praktischen Beispiel:
In den Spalten B6 bis F6 stehen Daten. Dann schreibe ich in G6 das zugehörige Bezahlungsdatum. Das soll dann Excel merken und die gesamte Zeile B6 bis G6 in das Datenblatt "Rechnungen bezahlt" verschieben und aus "Rechnungen offen" löschen.
Geht das überhaupt?
Gruß,
Matthias

Anzeige
AW: Rechnungsverwaltung
21.08.2003 14:57:14
Beni
Hallo Matthias,
habe den Code angpasst, aber dir zu sortierende Spalte ist mir nicht bekannt

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Column = 7 Then Cells(Target.Row, 7) = Date 'in Spalte G wird datum eingefügt
If Target.Column = 1 And Target.Row = 1 Then 'wird nur ausgeführte, wenn du auf A1 klicks
Dim Letzte As Long
With Worksheets("Rechnungen offen") 'Tabellenname anpassen
Letzte = .Cells(Rows.Count, 1).End(xlUp).Row
Range("B6:G" & Letzte).Select 'G = rechte Spalte
End With
'F6 = sortierte Spalte, anpassen
Selection.Sort Key1:=Range("F6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End If
End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 7 Then
Dim lRow As Long
With Worksheets("Rechnungen bezahlt") 'Tabellenname anpassen
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Cells(Target.Row, 2)
.Cells(lRow, 2).Value = Cells(Target.Row, 3)
.Cells(lRow, 3).Value = Cells(Target.Row, 4)
.Cells(lRow, 4).Value = Cells(Target.Row, 5)
.Cells(lRow, 5).Value = Cells(Target.Row, 6)
.Cells(lRow, 6).Value = Cells(Target.Row, 7)
End With
ActiveCell.Offset(0, -5).Delete Shift:=xlUp
End If
End Sub


Anzeige
AW: Rechnungsverwaltung
21.08.2003 15:17:07
Matthias
Hallo Beni!
Vielen Dank! Das ist genau das, was ich mir vorgestellt habe :-))
Nur eins geht nicht:
Wenn ich auf A1 drücke markiert er nur den Bereich von A2 bis G6 und löscht nicht die erledigten Datensätze.
Danke nochmal!
Matthias

AW: Rechnungsverwaltung
21.08.2003 15:21:19
Matthias
Hallo nochmal!
Er löscht doch was, aber nur den Inhalt der ersten Spalte. Ist mir grad aufgefallen, dass hier immer die Rechnungsnummern nach oben rutschen.
Erklärung:
Datum in G6 eingegeben => Übertragung => Löschen von B6, alles rutscht in Spalte B auf.
Er sollte aber B6 bis G6 löschen und alles aufrutschen.
Gruß,
Matthias

Anzeige
AW: Rechnungsverwaltung
21.08.2003 15:57:37
Beni
Hallo Matthias,
manchmal muss es eben schnell gehen,
ich werde mir heute Abend Zuhause daranmachen
und testen.
Gruss Beni

AW: Rechnungsverwaltung
21.08.2003 16:29:53
Beni
Hallo Matthias,
habe es getestet und bei mir funktioniert es bestens.
Gruss Beni

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Column = 7 And Target.Row > 5 Then
Cells(Target.Row, 7) = Date 'in Spalte G wird Datum eingefügt
Exit Sub
End If
If Target.Column = 1 And Target.Row = 1 Then 'wird nur ausgeführte, wenn du auf A1 klicks
Dim Letzte As Long
With Worksheets("Rechnungen offen") 'Tabellenname anpassen
Letzte = .Cells(Rows.Count, 1).End(xlUp).Row
Range("B6:G" & Letzte).Select 'G = rechte Spalte
End With
'D6 = sortierte Spalte, anpassen
Selection.Sort Key1:=Range("D6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
[B6].Select
End If
End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 7 And Target.Row > 5 Then
Dim lRow As Long
With Worksheets("Rechnungen bezahlt") 'Tabellenname anpassen
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Cells(Target.Row, 2)
.Cells(lRow, 2).Value = Cells(Target.Row, 3)
.Cells(lRow, 3).Value = Cells(Target.Row, 4)
.Cells(lRow, 4).Value = Cells(Target.Row, 5)
.Cells(lRow, 5).Value = Cells(Target.Row, 6)
.Cells(lRow, 6).Value = Cells(Target.Row, 7)
End With
Cells(Target.Row, 2).Delete Shift:=xlUp
Cells(Target.Row, 3).Delete Shift:=xlUp
Cells(Target.Row, 4).Delete Shift:=xlUp
Cells(Target.Row, 5).Delete Shift:=xlUp
Cells(Target.Row, 6).Delete Shift:=xlUp
Cells(Target.Row, 7).Delete Shift:=xlUp
End If
End Sub


Anzeige
AW: Rechnungsverwaltung
21.08.2003 18:56:47
Beni
Hallo Matthias,
habe noch einiges geändert, jetzt sollte es fehlerfrei funktionieren.
Gruss Beni

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Column = 7 And Target.Row > 5 And Cells(Target.Row, 2) <> "" Then
InMldg = MsgBox("Willst Du das aktuelle Datum eintragen?", vbYesNo + vbQuestion, "Rechnung bezahlt ?", "", 0)
If InMldg = 6 Then
Cells(Target.Row, 7) = Date 'in Spalte G wird Datum eingefügt
End If
Exit Sub
End If
If Target.Column = 1 And Target.Row = 1 Then 'wird nur ausgeführte, wenn du auf A1 klicks
Dim Letzte As Long
With Worksheets("Rechnungen offen") 'Tabellenname anpassen
Letzte = .Cells(Rows.Count, 1).End(xlUp).Row
Range("B6:G" & Letzte).Select 'G = rechte Spalte
End With
'D6 = sortierte Spalte, anpassen
Selection.Sort Key1:=Range("D6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
[B6].Select
End If
End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 7 And Target.Row > 5 Then
If Target = "" Then Exit Sub
Dim lRow As Long
With Worksheets("Rechnungen bezahlt") 'Tabellenname anpassen
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Cells(Target.Row, 2)
.Cells(lRow, 2).Value = Cells(Target.Row, 3)
.Cells(lRow, 3).Value = Cells(Target.Row, 4)
.Cells(lRow, 4).Value = Cells(Target.Row, 5)
.Cells(lRow, 5).Value = Cells(Target.Row, 6)
.Cells(lRow, 6).Value = Cells(Target.Row, 7)
End With
Cells(Target.Row, 2).Delete Shift:=xlUp
Cells(Target.Row, 3).Delete Shift:=xlUp
Cells(Target.Row, 4).Delete Shift:=xlUp
Cells(Target.Row, 5).Delete Shift:=xlUp
Cells(Target.Row, 6).Delete Shift:=xlUp
Cells(Target.Row, 7).Delete Shift:=xlUp
End If
End Sub


Anzeige
AW: Rechnungsverwaltung
26.08.2003 10:46:59
Matthias
Hi Benni!
Danke, jetzt funktioniert es super!
Sorry, dass ich mich erst jetzt melde, aber ich war übers Wochenende weg und hatte keinen Internetzugang!
Viele Grüße,
Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige