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.

Automatische Timestamps bei bestimmten Zellwert
#1
Hallo,

in meinem aktuellen Projekt habe ich eine Zelle, die nur bestimmte Werte annehmen darf (0-6).

Die Zelle beginnt bei 0 und wird nach und nach hochgezählt bis 6 (durch eine Formel).

Ich würde jetzt gerne in den nebenstehenden Zellen die Timestamps speichern, wann ein bestimmter Wert erreicht wurde.
Festgehalten soll aber immer nur der Moment, wenn sich die Zelle von 0->1, 1->2, 5->4, etc. ändert. Wenn ich die JETZT() Funktion nutzten will aktualisiert sich der Timestamp jedesmal, wenn sich irgendwo auf der Seite etwas ändert.
mein bisheriger (fehlgeschlagener) Versuch war:

A2=WENN(A1 = 1; JETZT();0); A3=WENN(A1 = 2; JETZT();0),..


ich denke, dass ich ein VBA macro benötige das aktiviert wird wenn sich eine Zelle ändert


Code:
Private Sub Worksheet_Change(ByVal Target As Range)

?

End Sub

Leider enden hier auch schon meine VBA skills... Undecided
Vielleicht hat ja einer von euch eine Idee wie ich das Lösen kann?

Danke euch im Voraus!

LG Sven
Antworten Top
#2
Hi,

ohne VBA geht das nur mit Iteration.
Mit VBA ist es einfacher, wenn Du uns Deine Mustermappe mal zur Verfügung stellst.
Antworten Top
#3
Ich habe mal eine Beispiel Datei gemacht, die Original darf ich leider nicht schicken aufgrund der Daten.

Auf Seite 1 kann man den "Aktuellen Zustand" bestimmen (C2).
Auf Seite 2 ist B4 = dem "Aktuellen Zustand" auf der anderen Seite (Seite1,C2).

In C5 bis I5 sollen dann automatisch die Zeitstempel angezeigt werden, wenn sich der Zustand in B4 ändert.

Beispiel:

Seite1, C2 wird auf 4 geändert um 14:01:20Uhr

dadurch wird automatisch auf Seite2, B4 = 4 gesetzt.

Der VBA macro soll nun in G5 auf Seite 2 "14:01:20Uhr" eintragen.
Wechsel ich 10 Sekunden später auf "5" soll H5 "14:01:30 Uhr"sein. G5 soll aber unverändert bleiben, bis wieder auf "4" geschaltet wird.

Ich hoffe es wird ein bisschen klar was ich meine  :D


Angehängte Dateien
.xlsx   Beispiel_Status.xlsx (Größe: 11,52 KB / Downloads: 3)
Antworten Top
#4
Hallo, :19:

probiere es mal so: :21:

.xlsb   Zelle_bei_Aenderung_Zeit_in_anderem_Tabellenblatt_setzen.xlsb (Größe: 16,37 KB / Downloads: 12)
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • SvenG
Antworten Top
#5
Hey,
danke für die Hilfe!!
also in der Test-Datei funktioniert super, nur kann ichs nicht auf mein Anwendungsfall übertragen:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin
    Application.EnableEvents = False
    If Target.Address = ("ZIEL") And Target.CountLarge = 1 Then
        "Tabelle1".Cells("Reihe", Me.Range("ZIEL").Value + 3).Value = Format(Now, "HH:MM:SS")
    End If
Fin:
    Application.EnableEvents = True


End Sub

Wobei:
ZIEL = Die Adresse die sich durch eine Formel verändert?
Tabelle 1 = Die Arbeitsmappe in der meine Timestamps geschrieben werden sollen?
Reihe = Die Reihe in der die Timestamps stehen sollen?

Hab ich das so richtig verstanden?
und warum "Me.Range("ZIEL").Value + 3" wieso diese +3?

Beste Grüße
Sven
Antworten Top
#6
Hallo, :19:

ich kann immer nur auf die vorhandene Beispieldatei etwas entwickeln. Du musst ja kein Original posten, aber der Aufbau sollte/muss identisch sein - sonst musst du selber anpassen! :21:

"Ziel" ist die Zelle in der du den Zustand änderst - in deiner Beispieldatei "Seite 1 C2".
Tabelle1 ist der Codename des Tabellenblattes und wird nicht in Anführungszeichen gesetzt.
3, weil du in "Seite 2" erst in Spalte C anfängst.
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • SvenG
Antworten Top
#7
Das ist mir schon klar und ich habe auch versucht den Aufbau so ähnlich wie möglich zu halten. (Daher auch das komische Layout :D)

Einziger Fehler den ich gemacht gemacht habe ist, dass ich vergessen habe zu erwähnen, dass es notwendig ist die Veränderung in B2 auf Seite 2 als Target zu haben. Dieser bekommt zwar in meinem beispiel durch Veränderung auf Seite 1 C2 ihren wert, aber in meinem Original bekommt er durch einen SVerweis den Wert zugewiesen...was das ganze wieder komplizierter macht weil das Change event glaube ich keine Veränderungen durch eine Formel erkennt  :20:
Ich Wert mal ein bisschen rum basteln und gucken ob ich zu einem Ergebnis komme :D

Danke nochmal für die Hilfe!
Antworten Top
#8
Hallo, :19:

man kann auch mit dem "Private Sub Worksheet_Calculate()" in "Seite 2" arbeiten. Das kann - je nach Tabellenaufbau - aber rechenintensiv werden. :21:
Oder du gehst noch einen Schritt zurück und überwachst die Zelle die durch Eingabe den Sverweis auslöst. Dodgy

Oder du lädst eine anonymisierte Beispieldatei hoch, die exakt dem Original entspricht. Confused
________
Servus
Case
Antworten Top
#9
Ja Worksheet_Calculate() ist zu rechenintensiv, da hatte ich eine Lösung aber das war nicht wirklich eine Option.

so einfach zurück gehen geht leider nicht. Der Wert wird bestimmt durch mehrere Sverweise und ist eine art zuordnung von mehreren Zuständen von bestimmten Systemen in eine Kategorie. Manuell eingegeben werden nur die Zustände von den Systemen (z.b. SAP ist im zustand 9, Logistik im Zustand "SENT", etc.). Aus dieser Kombination von System-statusmeldungen wird eine Kategorisierung erstellt. Ein anonymisiertes Beispiel zu erstellen würde zu lange dauern :D
Am ende wird die Excel logik sowieso in einer andere Programiersprache nochmal umgesetzt. Dann werde ich das dort machen müssen...

Trotzdem nochmal vielen dank für die Mühe  :28:
Antworten Top


Gehe zu:


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