Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel Zeile Archivieren
#1
Hallo zusammen,

ich bin aktuell dabei eine neue Excel-Liste für meine Abteilung zu erstellen und tue mich in einem Punkt etwas schwer.
Bin mir sicher das ihr mit weiterhelfen könnt.

Projekt Besprechungsprotokoll:
Jeden Tag schreibe ich das Protokoll von unserer Besprechung. Tabelle 1.
Hier gibt es 5 Spalten = Nr. | Aufgaben | Ereignisse | Maßnahme | Datum
Diese Spalten werden vortlaufend in Zeilen ausgefüllt.
Bsp:
1. | PC reinigen | Viele verschmutzte Rechner | Mitarbeiter X reinigt Rechner | 22.02.18
2. ............................
3. ................... usw.

Sobald eine Maßnahme abgeschlossen ist bzw. eine Lösung gibt möchte ich diese gerne per Makro in ein Archiv verschieben. Das Archiv soll in der selben Datei aber in andere Tabelle sein. Tabelle 2.

Mein Problem ist:
Ich hab dies per Makrowie folgt probiert.
Die betroffene Zeile wird in Tabelle 1 kopiert , anschließend in Tabelle 2 eingefügt und dann in Tabelle 1 gelöscht.
Das passt somit auch ABER wenn ich jetzt wieder in Tabelle 1 in die gleiche geelerte Zeile etwas eingebe und diese z.B. auch Archiviere überschreibt es dann bereits die die ich davor archiviert habe in Tabelle 2.

Wie schaffe ich es das er von selber fortlaufend im Archiv schreibt und nicht statisch die gleiche Zeile nimmt in der Marko.

Hoffe konnte mich verständlich ausdrücken.

Danke
Antworten Top
#2
Du ermittelst die erste freie Zeile in der Tabelle2 mit
Code:
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row + 1
Schöne Grüße
Berni
Antworten Top
#3
Hallo,

würde ich mit dem Doppelklickereignis in Spalte E machen.
Sprich Doppelklick in Spalte E auf Blatt1 schreibt das Datum in die Zelle, kopiert die Zeile von A bis E in Blatt 2 und löscht die Zeile in Blatt 1

Der Code gehört ins Codemodul des Tabellenblattes auf dem er sich auswirken soll.
Rechtsklick auf den Tabellenblattreiter - Code anzeigen - Code rechts ins Codefenster kopieren

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim loLetzte As Long

Application.CutCopyMode = False

If Target.Count > 1 Then Exit Sub
If Target.Row > 1 Then
   If Target.Column = 5 Then
       Cancel = True
       Target = Date
       Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Copy
       With Worksheets("Tabelle2")
           loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
           .Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues
           Application.CutCopyMode = False
       End With
       Rows(Target.Row).Delete
   End If
End If

End Sub
Gruß Werner
Antworten Top
#4
schau mal hier das hatten wir vor kurzem erst...

https://www.clever-excel-forum.de/thread-17860.html
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#5
Danke erst mal euch allen :).

@Werner.M.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim loLetzte As Long

Application.CutCopyMode = False

If Target.Count > 1 Then Exit Sub
If Target.Row > 1 Then
   If Target.Column = 5 Then
       Cancel = True
       Target = Date
       Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Copy
       With Worksheets("Tabelle2")
           loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
           .Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues
           Application.CutCopyMode = False
       End With
       Rows(Target.Row).Delete
   End If
End If

End Sub


Ich hab deinen Code benutzt und dieser ist wirklich sehr gut. Aber wie bekomme ich es auf mehrere Zeilen? So greift er ja nur auf einer Zeile.
Und wenn ich das Datum auswähle ändert es in dem Tabellenblatt in irgendein Code
Antworten Top
#6
Hallöchen,

im Prinzip geht es darum, dass Du per Doppelklick entscheidest wann eine Zeile archiviert wird.

Falls Du alle angelegten Zeilen in einem Rutsch archivieren willst, müsste man das (ein) Makro auf Knopfdruck starten. Dazu müsste man es etwas anpassen.
Falls Du nur ausgewählte Zeilen archivieren willst oder irgendeine andere Bedingung für das Archivieren hast, müsste man das Makro mit weiteren Änderungen anpassen.

Eine Bedingung könnte z.B. sein, dass Du in bestimmten Zelle einen Abschluß einträgst. Ein Makro könnte dann z.B. auf Knopfdruck alle Zellen mit diesem Kennzeichen übertragen

Musst eben nur noch mal genau definieren, wann was zu tun ist.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Hallo

dieses Makro in ein normales Modul laden, einen Button einfügen, und ihm das Makro zuweisen.
Der Button startet nur beim drücken und kopiert den selektierten Bereich.

mfg  Gast 123

Code:
Sub Bereich_kopieren()
Dim Adr1 As String, Zeilen As Integer
Dim loletzte As Long, Z1 As Integer
If ActiveCell.Column = 5 And ActiveCell.Row > 1 Then
  Selection = Date
  Z1 = ActiveCell.Row
   With Worksheets("Tabelle2")
        Zeilen = Selection.Rows.Count - 1
        Adr1 = Selection.Cells(1, 1).Offset(0, -4).Address
        loletzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
        'Bereich über Adr1 + Resize festlegen
        Range(Adr1).Resize(3, 5).Copy
        .Cells(loletzte, 1).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
      End With
     'koperte Zeilen löschen
      Rows(Z1 & ":" & Z1 + Zeilen).Delete
     'Cursor auf Adr1 setzen
      Range(Adr1).Offset(0, 4).Select
End If
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste