Registriert seit: 10.05.2019
Version(en): 2010
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.
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
10.05.2019, 22:16
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2019, 22:17 von MisterBurns.)
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
Registriert seit: 10.05.2019
Version(en): 2010
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.
Beispiel.zip (Größe: 19,39 KB / Downloads: 7)
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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)
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
@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)
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
ja, gel... Jahrzehnte am Rechner gesessen, da lernt man das eine oder andere kennen und macht sich so seine Gedanken ... 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)
Registriert seit: 10.05.2019
Version(en): 2010
12.05.2019, 10:00
(Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2019, 10:13 von Norbert343.)
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
12.05.2019, 11:34
(Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2019, 12:32 von schauan.)
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 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)
|