Office: Letzer Wert einer Zelle VOR Änderung

Helfe beim Thema Letzer Wert einer Zelle VOR Änderung in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich versuche gerade, ein Makro zu schreiben, das Änderungen an Tabellen in der Form "Vorher:... Nachher:..." protokolliert. Hierfür... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von JFreudens, 20. Juni 2002.

  1. Letzer Wert einer Zelle VOR Änderung


    Hallo zusammen,

    ich versuche gerade, ein Makro zu schreiben, das Änderungen an Tabellen in der Form "Vorher:... Nachher:..." protokolliert. Hierfür nutze ich das Worksheet_Change-Ereignis.

    Die Werte vor der Änderung speichere ich z. Zt. in einer Variablen. Die Speicherung wird ausgelöst durch das Worksheet_SelectionChange-Ereignis.

    Solange immer nur eine Zelle markiert wird, funktioniert das auch ganz prima. Bei Auswahl eines Bereiches kann ich natürlich nicht den Wert eines Bereiches einer einzelnen Variablen zuweisen. Also brauche ich einen anderen Weg.

    Weiß jemand, ob man mit XL97 oder XL2K irgendwie auf den alten Wert (vor der letzten Änderung) einer Zelle zugreifen kann.

    Danke schon mal für Eure Tipps

    Johannes

    :)
     
    JFreudens, 20. Juni 2002
    #1
  2. Moin, Johannes,

    eine zugegeben nicht sehr schöne Lösung wäre, die Auswahl des Bereiches immer nur für eine Zelle zuzulassen.

    Und bei
    [/quote]



    Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  3. Hallo jinx,

    danke, aber das ist ansatzweise das, was ich mir auch schon überlegt hatte.

    Selektion eines Bereiches funktioniert nicht und die Undo-Funktion wird auch nur richtig protokolliert, wenn die Selektion zwischenzeitlich nicht geändert wurde.

    Ich werde mal versuchen, dass Problem der Auswahl eines Bereiches dadurch zu lösen, dass ich die alten Werte in einem Array buffere.

    Wie ich die Undo-Sache löse, weiß ich noch nicht.

    CU

    Johannes
     
    JFreudens, 23. Juni 2002
    #3
  4. Letzer Wert einer Zelle VOR Änderung

    Und hopp! Hat noch jemand 'ne Idee?

    Johannes
     
    JFreudens, 24. Juni 2002
    #4
  5. Hallo zusammen,

    auf der Stichwortsuche "Protokoll" stolpert man schnell auch auf diesen Beitrag hier. Frage an Johannes: bist du auf eine Lösung für Bereichsänderungen gekommen? Würde mich sehr interessieren.

    Ansonsten ein Tipp für andere User:
    Das schöne Makro oben hat (meiner Ansicht nach) leider einen gravierenden Nachteil. Es wird der neue Wert der Zelle als Value eingetragen. Dieses ist bei einer existierenden Formel in der Zielzelle aber sehr lästig, da diese verloren geht. Dieses Manko kann man aber sehr einfach beheben, wenn man die Codezeile "Target.Value = vNew" durch ein zweites "Application.Undo" ersetzt.
     
  6. Moin, Woody,

    nur mal so ein Gedanke: wenn Du einen Wert in eine Zelle mit einer Formel einträgst, ist die Formel immer weg - sollte man IMHO nicht tun...
     
  7. Moin jinx,

    jepp, ist schon klar, aber ich kann nicht wissen ob die Benutzer meiner Dateien die Formel/Wert mit einen neuen Wert hart überschreiben (Fall A) oder aber eine bestehende Formel anpassen oder erweitern (z.b. +- ein Anpassungswert) (=Fall B). Fall A ist ja unproblematisch. Ohne meine Änderung wurde aber für den Fall B der Formelanpassung diese zerstört, ein weiteres Ändern nicht ermöglicht, geschweige den überhaupt die Möglichkeit gegeben im "Überwachungsbereich" Formeln einzugeben (ja, geht), welche nach Betätigung von ENTER noch existierten (nein, geht nicht). Oder würdest du nicht auch eine nicht gleich gelunge Formel lieber anpassen wollen, als diese komplett nochmal neu einzugeben? (okay, vielleicht stellt sich dieser Fall ja nicht bei dir, da du eventuell gleich alles auf Anhieb richtig machst *wink.gif* )

    Doch das ist nun alles kein Problemo mehr *grins

    "the smooth and silent big brother"
     
  8. Letzer Wert einer Zelle VOR Änderung

    Hi Woody,

    ich bin damals den steinigen Weg gegangen und habe jeweils beim Selection_Change geprüft, ob mehrere Zellen markiert sind. Bei weniger als 10 habe ich die Zellen einzeln gepuffert, bei mehr als 10 nur noch die Adresse des Ranges. Habe mir seinerzeit überlegt, dass man bei einer Protokollzeile / Änderung ohnehin nicht alle Zellen überwachen kann. Einmal Spalte A komplett selektiert und eine 1 eingefügt => schon würde das Protokoll nicht mehr auf eine Tabelle passen.

    Meine Lösung speichert zu jedem Zeitpunkt die Werte und Formeln "unter dem Cursor", noch bevor etwas geändert wird. Dadurch kann ich auf das Undo verzichten.

    Ist aber immer noch nicht perfekt, da einige Aktionen einfach kein Ereignis auslösen.

    Hth

    Johannes
     
    JFreudens, 5. Dezember 2003
    #8
  9. Aah, okay. Möglichkeiten und Grenzen.

    Danke für deine Antwort. *Smilie Ich bin dann mit meiner Version ganz zufrieden.

    Schönes Wochenende und einen ...
     
  10. Hallo zusammen,

    ich nutzte jetzt mal diesen Thread, um meine Frage zu stellen ....

    Auf einem Übersichtsblatt werden die Summen aus anderen Sheets zusammengezogen (d.h. die Berechnungen finden dort statt). Jetzt sollen die Änderungen festgehalten werden (kann/soll auf dem selben Sheet geschehen).

    Folgender Ansatz...
    ***
    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Marktwerte As Range
    Dim intRow As Integer

    Set Marktwerte = Range("E4:E28")

    If Intersect(Target, Marktwerte) Is Nothing Then Exit Sub

    intRow = Range("Q65536").End(xlUp).Offset(1, 0).Row

    Range("Q65536").End(xlUp).Offset(1, 0) = Date()
    Cells(intRow, 18) = Range("E4")
    Cells(intRow, 19) = Range("E5")
    Cells(intRow, 20) = Range("E6")
    ....
    End Sub
    ***
    ... bringt mich nur in sofern weiter, als dass alle Zellen (von E4 bis E28) in die Protokollspalten kopiert werden. Ich würde aber gerne nur die Zellen kopieren, bei denen sich auch tatsächlich etwas geändert hat.

    Hat jemand eine Idee, wie ich das anstellen kann?

    Danke schon einmal im Voraus.

    cu
    myfake
    +++
    Excel 2000
     
  11. Hallo, myfake,

    entweder den Code von Herber übernehmen oder die Eigenschaft Target durch eine Select Case-Anweisung auswerten lassen, um die zu beschreibende Zelle zu erhalten. Meiner Meinung nach fehlt noch die Beschränkung auf jeweils nur eine Zelle, da es ansonsten Probleme mit der Zuordnung geben könnte.

    Gruß
    LS
     
    Lumpensammler, 20. Oktober 2004
    #11
  12. Hallo Lumpensammler,

    hmmm ..... vielleicht bin ich ja blind, aber welcher Code von Herber? Wenn ich auf den Link bei Jinx klicke komme ich auf eine Seite, auf der ich nichts passendes finde.

    Zu Deinem anderen Punkt. Ich kann es nicht auf eine Zelle beschränken, da sich manchmal auch mehrere Zellen auf einmal ändern! Somit fällt imho eine Select Case Anweisung aus.

    cu
    myfake
     
  13. Letzer Wert einer Zelle VOR Änderung

    Hallo, myfake,

    der IE zeigt mir unterhalb des Links einen Code an (ansonsten bitte einmal auf Druckansicht für den Beitrag umschalten) - ansonsten sollte statt excel-cd in der URL herber eingesetzt werden.

    Gruß
    LS
     
    Lumpensammler, 20. Oktober 2004
    #13
  14. Hallo Lumpensammler,

    *rolleyes.gif* well ..... was soll ich sagen, den Code sehe ich natürlich. Ich dachte nur, dass er von Jinx sei.

    Wie dem auch sei. Den Code hatte ich mir selbstverständlich auch schon angesehen. Doch wenn ich ihn richtig deute, dann laufe ich dort in die selbe Problematik vor der ich jetzt gerade stehe. Wie kann ich festlegen, dass bei einer Änderung pro Wert vorgegagen wird?

    Vielleicht kommt aus meinem Code nicht so ganz rüber, was gemacht werden soll. Daher noch einmal etwas ausführlicher .....

    In den Zellen E4 bis E28 wird auf andere Sheets zugegriffen und Summen gebildet. Wenn sich in den einzelnen Sheets etwas ändert, dann wird das auf meinem Übersichtssheet ersichtlich. Wenn es eine Änderung gibt, dann sollen diese in den Zellen Q(i) bis AP(i) dokumentiert werden. Allerdings eben nur, wenn sich etwas ändert! Deshalb funktioniert das "iRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1" aus Herbers Code auch nicht.

    Es sei denn ....... wenn ich statt des "+1" eine weitere Variable benutze, die den jeweiligen Eintrag aus E4 bis E28 widerspiegelt. Hmm, mal schauen, ob es damit funzt.

    Herzlichen Dank schon einmal für Deine Hilfe.

    cu
    myfake
     
  15. Hallo zusammen,

    kann es eigentlich sein, dass das Worksheet_Change Ereignis nicht angestoßen wird, wenn ein Wert über eine Verknüpfung geändert wird?

    Folgender Test:
    - Auf Tabelle 2 bis Tabelle 5 steht in den Zellen B3 "=Tabelle1!B1"
    - in Zelle B4 steht jeweils "=B3*" (also 2 bei Tabelle2, 3 bei T3, usw)
    - in B5 wird die Summe gezogen
    - in Tabelle1 steht in B1 ein Wert (bspw. 10)
    - in den Zellen B3 bis B6 dann der Link auf die jeweilige Summe der anderen Blätter (also in B3 "=Tabelle2!B5", usw.)

    Folgender Testcode ...
    ***
    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim i As Integer
    Dim arrNumbersNew(4) As Variant
    Dim arrNumbersOld(4) As Variant

    'Arrayfelder Old befüllen
    For i = 1 To 4
    arrNumbersOld(i) = Cells(i + 2, 2).Value
    Debug.Print arrNumbersOld(i)
    Next i

    If Intersect(Target, Range("B3:B6")) Is Nothing Then Exit Sub

    'Arrayfelder New befüllen
    For i = 1 To 4
    arrNumbersNew(i) = Cells(i + 2, 2).Value
    Debug.Print arrNumbersNew(i)
    Next i

    End Sub
    ***
    ... bleibt immer brav im oberen Teil. D.h., nur wenn ich in Zelle B1 etwas ändere werden die Werte gedruckt. Und dann auch nur die. Die neuen Werte werden nicht angesprungen.

    Es sieht so aus, als würde das Change Ereignis nicht auf Änderungen, die über eine Formel kommen reagieren.

    Hat hierzu jemand einen Tipp?

    cu
    myfake
     
Thema:

Letzer Wert einer Zelle VOR Änderung

Die Seite wird geladen...
  1. Letzer Wert einer Zelle VOR Änderung - Similar Threads - Letzer Wert Zelle

  2. indirekte Funktion, letzte Zeile mit einem Zeitwert anzeigen

    in Microsoft Excel Hilfe
    indirekte Funktion, letzte Zeile mit einem Zeitwert anzeigen: Hallo zusammen, Versuche vergebens die letzte Zeile in einer Spalte S10:S40 mit einem Zeitwert ,z.B.: 33:43, hh:mm in Zeile S42 angezeigt zu bekommen. Die Zeilen mit einem Bindestrich, - ,...
  3. Letzer Wert aus Bereich

    in Microsoft Excel Hilfe
    Letzer Wert aus Bereich: Hallo Zusammen, mit dieser Formel möchte ich den letzten Wert in dem Bereich ausgeben. In Zelle AR4 steht =INDEX(AJ4:AQ4;SUMMENPRODUKT(MAX((AJ4:AQ4<>"")*ZEILE(AJ4:AQ4)))) Wenn ich die Werte als...
  4. Mittelwert der letzen 6 Datensätze über ein Filterkriterium fortlaufend

    in Microsoft Excel Hilfe
    Mittelwert der letzen 6 Datensätze über ein Filterkriterium fortlaufend: Hallo. (Excel 2010) Bräuchte eine Lösung wie ich fortlaufend die letzten 6 Werte einer Tabelle bezogen auf das Datum nach einem Auswahlkriterium (Auswahlfeld z.B. Menü 1, Menü 2..) Filtern oder...
  5. letze Zeichen löschen bzw. neue Variablen erstellen

    in Microsoft Excel Hilfe
    letze Zeichen löschen bzw. neue Variablen erstellen: Ihr Lieben, ich bräucht da mal eure Hilfe. Und zwar habe ich Variablen die nach folgendem Prinzip aufgebaut sind: j12_b05,0_2 Ich muss hieraus jetzt fünf neue Variablen erstellen. Also...
  6. Letze Zeile finden und kopieren

    in Microsoft Excel Hilfe
    Letze Zeile finden und kopieren: Hallo Zusammen, habe mal wieder ein Problem mit einem Makro. Ich möchte aus meinem Tab1 Werte von B5:B10 in Tab2 ?5:?10 kopieren/transponieren. Bis dahin kein Problem. Bevor er jedoch in Tab2...
  7. Letzer Wert

    in Microsoft Excel Hilfe
    Letzer Wert: Hallo Zusammen! Ich brauche dringend Eure Hilfe. Wie kann ich mir in einem Arbeitsblatt den letzten Wert > 0 aus vordefinierten Zeilen- oder Spaltenwerte eines anderen Arbeitsblattes...
  8. Letze Zeile finden, kopieren, eine Zeile tiefer einfügen

    in Microsoft Excel Hilfe
    Letze Zeile finden, kopieren, eine Zeile tiefer einfügen: SOS Ich schon wieder... habe ein kleines problemchen. ich suche in einer datei die erste freie Zeile unter der letzten zeile in der was steht, will diese kopieren und eine zeile tiefer...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden