Automatisches Archiv Excel 2010
#1
Hallo,

Hilfe, Excel 2010
In der ersten Tabelle will ich täglich neue Werte eintragen (vorher alte Werte löschen) wobei Spalte A Produkt aus Cund D ist und einen Kontrollwert ergibt.
Die Tabelle 2 soll ein Archiv werden und erhält dazu automatisch das Datum des Eingabetages in Spalte K.
Existiert die Kontrollnummer in Tabelle2-Archiv schon, so soll in der täglichen Tabelle1 die Zelle farbig markiert werden.

 - ich habe ein Arbeitsblatt erstellt und 3 Funktionen einzeln  geprüft.
 1. Kopiere  alle gefüllten Zeile (von A-K) aus Tabelle1 in Tabelle2 (Archiv)und füge sie nach der letzten gefüllten Zeile ein.
 2. Füge das Datum in Tabelle2 unveränderlich in Spalte K ein.
 3. Markiere Zelle "Kontrollwert" in Tabelle1 wenn in Tabelle2 (Archiv) der Wert bereits vorhanden ist.

Einzlen funktioniert alles, ABER  füge ich alles in ein Arbeitsblatt zusammen funktioniert gar nichts

Hier mein Arbeitsblatt

zu1. Code in Tabelle1

Private Sub Worksheet_Change(ByVal Target As Range)
'Code in das entsprechende Tabellenblatt!

If Not Intersect(Target, Range("D2:D" & Cells(Rows.Count, "J").End(xlUp).Row)) Is Nothing And Target.Count = 1 Then
  If Target > 0 Then
    Range(Cells(Target.Row, "A"), Cells(Target.Row, "J")).Copy _
      Destination:=Sheets("Tabelle2").Range("A" & Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row + 1)
  End If
End If
End Sub

zu2. Code in Tabelle2

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Then Exit Sub

If Target.Column = 3 And Target.Value <> 0 Then
Target.Offset(0, 8).Value = Now
End If
End Sub

zu 3.

Bedingte Formatierung

=VERGLEICH(A4;Tabelle2!A2:A2000;0)

PS. Ich kann den Wald wegen der vielen Bäume nicht sehen.
Top
#2
Ohne Beispielmappe wird da wohl keiner zu testen anfangen.
Außerdem ist mir nicht klar, was du mit
Zitat:füge ich alles in ein Arbeitsblatt zusammen funktioniert gar nichts
meinst - was fügst du in Blatt zusammen?

Deinen Code kannst du außerdem vereinfachen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Code in das entsprechende Tabellenblatt!

If Not Intersect(Target, Range("D2:D" & Cells(Rows.Count, "J").End(xlUp).Row)) Is Nothing And Target.Count = 1 And Target > 0 Then
   Range(Cells(Target.Row, "A"), Cells(Target.Row, "J")).Copy _
     Destination:=Sheets("Tabelle2").Range("A" & Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row + 1)
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 And Target.Value <> 0 And Target.Count = 1 Then
    Target.Offset(0, 8).Value = Now
End If
End Sub
Spart dir die If-Verschachtelungen.

Zuletzt noch ein allgemein gültiger Tipp: "Funktioniert nicht" ist eine recht nutzlose Aussage. Definiere, was nicht funktioniert und welche Fehlermeldung du an welcher Stelle im Code erhältst.
Schöne Grüße
Berni
Top
#3
Danke MisterBurns für die Antwort.
Die einzelnen Schritte, die automatisch ausgeführt werden sollen, habe ich in seperaten Exeldatein (Arbeitsmappe) getestet und es hat funktioniert. Danach wollte ich es in eine Arbeitsmappe mit zwei Tabellen übertragen und kam keine Fehlermeldung und es ist aber scheinbar auch nichts passiert. Lediglich die Funktion bedingte Formatierung "VERGLEICH" hat Zellen eingefärbt, allerdings im der Tabelle2 und nicht wie beabbsichtigt in Tabelle1.
Beim "Datum" in Tabelle2 wird ein Datum eingetragen, wenn ich es eintippe, nicht aber wenn ein Wert durch Kopieren eingefügt wird.

.zip   Beispiel.zip (Größe: 19,39 KB / Downloads: 7)
Top
#4
Hi Norbert,

hat das einen tieferen Sinn, dass du eine Exceldatei mit 24 KB zippst?
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#5
Dafür brauchst du doch keine zwei Codes, einer reicht völlig aus:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ziel As Worksheet
Dim Zeile As Long

Set Ziel = Sheets("Tabelle2")
With Ziel
   Zeile = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
End With

If Not Intersect(Target, Range("D2:D" & Cells(Rows.Count, "J").End(xlUp).Row)) Is Nothing And _
   Target.Count = 1 And Target > 0 Then
       Range(Cells(Target.Row, "A"), Cells(Target.Row, "J")).Copy Destination:=Ziel.Range("A" & Zeile)
       Ziel.Cells(Zeile, 11) = Now
End If
End Sub
Schöne Grüße
Berni
Top
#6
@Günter,

es gibt zuweilen betriebliche Einschränkungen hinsichtlich der Dateiformate beim Up- und Download von Dateien.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
Alle Achtung, welch tiefschürfende Erkenntnis. :97: Ich warte aber lieber auf die Antwort des TE.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#8
ja, gel... Jahrzehnte am Rechner gesessen, da lernt man das eine oder andere kennen und macht sich so seine Gedanken ...  Idea Und wenn Berni's Code passt ist sogar das eigentliche Problem gelöst  :17:
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Hallo Berni, vielen Dank für die Mühe die du dir gemacht hast. Leider komme ich damit nicht weiter. Vielleicht stellst du mal die mal die getestet Datei ein, damit ich sehen kann ob ich bei mir im Excel etwas falsch eingestellt habe.

Danke Norbert

[b]Hallo ,schauan[/b]

Vielen Dank für deine "Antwort" . Eigentlich hätte ich gerade von dir einen zweiten Lösungsvorschlag erwartet, Schade.

Norbert
Top
#10
Hi Norbert,

Zitat:Eigentlich hätte ich gerade von dir einen zweiten Lösungsvorschlag erwartet
ich wollte je eigentlich nur auf Günters Frage antworten

Aber ich kann auch zum Thema Smile

Der code von Berni passt und da muss man nicht unbedingt was anders machen.

Wichtig bei Verwendung von Berni's Code wäre, dass Du die alten WorkSheet_Changes- Codes in Tabelle 1 und Tabelle 2 entfernst.
Der Code wirkt nur dann, wenn Du in Spalte D im definierten Bereich etwas änderst. Dann wird vom Code auch in Tabelle2 ein Datum eingetragen.
Ich kann das
Zitat:Beim "Datum" in Tabelle2 wird ein Datum eingetragen, wenn ich es eintippe, nicht aber wenn ein Wert durch Kopieren eingefügt wird.
also erst mal nicht nachvollziehen. Außer - Du fügst was von Hand ein, das geht nicht - Wir gehen davon aus, dass das Einfügen nur vom Code gemacht wird.

Ich hätte bei Verwendung von With selbiges weiter gefasst bis nach dem End If. Und dann wär noch die Frage, ob Du Formate mit übertragen willst … Wenn nicht, müsste man PasteSpecial nehmen.  

Zitat:Danach wollte ich es in eine Arbeitsmappe mit zwei Tabellen übertragen und kam keine Fehlermeldung
Wie gesagt, wenn ich aus Deiner Beispieldatei die Codes entferne und Bernis Code eintrag, passt er. --> ich kann Dir die Datei gerne auch posten, aber anders herum wäre die mit dem Fehler ganz gut, dann kann ich nachschauen und Dir vielleicht einen Tipp geben ...

Zitat:Lediglich die Funktion bedingte Formatierung "VERGLEICH" hat Zellen eingefärbt, allerdings im der Tabelle2 und nicht wie beabsichtigt in Tabelle1.
Die bedingte Formatierung ist nicht korrekt. Markiere den gewünschten Bereich in Tabelle1 und trage diese Formel ein:
=VERGLEICH(A2;Tabelle2!A2:A6000;0)
Durch das verwendete Kopieren und Einfügen wird auch die bedingte Formatierung mitgenommen - soll das nicht passieren, hatte ich schon gesagt, wäre PasteSpecial eine Variante.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


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