Excel vba wenn sich wert in zelle ändert

Rückkehr in VBA-Code-Beispiele

Das Ereignis Worksheet_Change

Möglicherweise möchten Sie ein Makro ausführen, wenn sich eine Zelle ändert. Eine beliebte Anwendung dieser Fähigkeit besteht darin, einen benutzerdefinierten Code zu haben, der  die Zelle überprüft, nachdem eine Änderung vorgenommen wurde. Durch Verwendung des Ereignisses „Worksheet Object Change“ ist dies leicht zu machen.

Im Visual-Basic-Editor müssen Sie zunächst auf den Blattnamen doppelklicken, in dem sich die Zelle ändert, die das Makro aktiviert. Dadurch wird das Codefenster für dieses Blattobjekt geöffnet.

In diesem Fall wollte ich ein Makro ausführen, wenn sich eine Zelle in Tabelle1 ändert.

Excel vba wenn sich wert in zelle ändert

Nach dem Öffnen des Codefensters für das Arbeitsblatt platzieren Sie Ihren Code im Ereignis Worksheet_Change. Im folgenden Beispiel wird eine Meldungsbox angezeigt, wenn sich der Inhalt von Zelle A1 ändert. Zuerst wird die Unterprozedur ausgelöst, wenn sich eine beliebige Zelle ändert, dann wird der Code nur ausgeführt, wenn es sich um Zelle A1 handelt. Diese Unterscheidung geschieht aufgrund der If…Then-Anweisung.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then
     MsgBox "Dieser Code wird ausgeführt, wenn sich Zelle A1 ändert!"
End If

End Sub

Sie können Ihren Code direkt in die Unterprozedur Worksheet_Change einfügen oder von dort aus ein anderes Makro aufrufen.

VBA-Programmierung leicht gemacht

Hören Sie auf, online nach VBA-Code zu suchen. Erfahren Sie mehr über AutoMacro – Ein VBA Code Builder, der es Anfängern ermöglicht, Prozeduren von Grund auf mit minimalen Programmierkenntnissen und mit vielen zeitsparenden Funktionen für alle Benutzer zu programmieren!

Excel vba wenn sich wert in zelle ändert

Mehr erfahren!

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

Excel vba wenn sich wert in zelle ändert

Learn More!

Office: Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

Helfe beim Thema Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo ich habe folgendes Problem: Wenn sich in einer Zelle (E7) der Wert ändert, dann soll in der Zelle (G7) kumulativ die Änderung (+1) gezählt... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von chrisi82, 16. August 2013.

  1. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

    Hallo ich habe folgendes Problem:

    Wenn sich in einer Zelle (E7) der Wert ändert, dann soll in der Zelle (G7) kumulativ die Änderung (+1) gezählt werden.
    Das soll dann auch für alle anderen einzelnen Zelle (E8 bis E71) funktionieren, die Anderungen dann in (G8 bis G71).

    Excel vba wenn sich wert in zelle ändert

    Kann mir da jemand weiterhelfen ?? Ich hab da nicht so richtig Plan

    Danke !!!

  2. Hallo!

    Werden die Werte in Spalte E manuell eingetragen, oder steckt da eine Formel dahinter? Wenn ja, welche?

  3. Die werden von Hand eingetragen

  4. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

    Hallo!

    Mach einen Rechtsklick auf den Tabellenreiter des Blatts, wähle "Code anzeigen" und kopiere diesen Code ins Codefenster:

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E8:E71")) Is Nothing And Target.Count = 1 Then _
    Target.Offset(0, 2) = Target.Offset(0, 2) + 1
    End Sub

  5. Danke funktioniert.

    Was müsste geändert werden, wenn die Zahl per Formel eingetragen wird ??

    =C7/60

    Zuletzt bearbeitet: 16. August 2013

  6. Hat dafür jemand vielleicht eine Lösung ???

  7. Hallo,
    so einfach ist das nicht, denn das Worksheet_Change-Ereignis tritt nur ein, wenn der User eine Zelle durch Eingabe eines Wertes ändert.
    Ändert sich der Zellwert nur deshalb, weil eine Zellformel ein anderes Ergebnis geliefert hat, tritt statt dessen das Worksheet_Calculate-Ereignis ein - nachdem die Änderung in der Zelle passiert ist. Da dieses Ereignis keinen Target-Parameter hat, weiß man nur, dass eine Neuberechnung des Arbeitsblattes stattgefunden hat - aber wo, das ist die große Preisfrage.
    Um diese Preisfrage zu lösen, muss man sich zuerst einen Hilfsbereich reservieren, der die Zellwerte des Bereiches E8:E71 enthält, bevor eine solche Blattneuberechnung erfolgte. Im untenstehenden Makro habe ich dafür den Bereich "Z8:Z71" hergenommen. Falls dies bei Dir ein anderer Bereich sein muss/soll, müsstest Du die entsprechend (rot) gekennzeichnete Stelle im Makro ändern, aber nur die beiden Z durch einen neuen Spaltenbuchstaben (nicht jedoch die Zeilennummern!!)

    Private Sub Worksheet_Calculate()
      'Dieses Ereignis tritt ein, nachdem das Arbeitsblatt neu berechnet wurde
      Dim rngIstNeuberechnet As Range
      Dim rngVergleichswerte As Range
      Dim rngZelle As Range, SpalteZ_Diff As Long
      '
      'Bereich der Zellen, die überprüft werden sollen, ob sich durch Berechnungen ihr Wert geändert hat:
      '(Im Bereich G8:G71 sind die Zähler enthalten, die mitzählen, wie oft eine solche Zelländerung erfolgte)
      Set rngIstNeuberechnet = Range("E8:E71")
      '
      'Bereich der Zellen, die die Werte aus E8:E71 bis vor der letzten Neuberechnung des Arbeitsblattes enthalten:
      Set rngVergleichswerte = Range("[COLOR=#ff0000][B]Z[/B][/COLOR]8:[COLOR=#ff0000][B]Z[/B][/COLOR]71")  '<--- eventuell anderen Bereich wählen!!
      '
      SpalteZ_Diff = rngVergleichswerte.Column - rngIstNeuberechnet.Column
      Application.EnableEvents = False
      For Each rngZelle In rngIstNeuberechnet.Cells
        With rngZelle
          If .HasFormula Then
            If .Value <> .Offset(0, SpalteZ_Diff) Then
              .Offset(0, SpalteZ_Diff) = .Value
              .Offset(0, 2) = .Offset(0, 2) + 1
            End If
          End If
        End With
      Next rngZelle
      Application.EnableEvents = True
      '
    End Sub
    '
    Private Sub Worksheet_Change(ByVal Target As Range)
      'Dieses Ereignis tritt ein, nachdem der User im Target-Bereich neue Werte eingegeben hat:
      If Intersect(Target, Range("E8:E71")) Is Nothing Then Exit Sub
      With Target
        If .Count = 1 Then
          .Offset(0, 2) = .Offset(0, 2) + 1
        End If
      End With
    End Sub
    
    

    Am besten Du markierst die obigen Makros, kopierst sie in die Zwischenablage und fügst sie anstelle des Makros von Schatzi wieder ein (Das Makro von Schatzi ist in der 2. Private-Sub enthalten). Wo das Makro von Schatzi in Deiner Excel-Datei zu finden ist, das weißt Du ja.

    Zuletzt bearbeitet: 18. August 2013

  8. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

    Funktioniert super !!!

    Danke !!!

  9. Super Sache von Euch. Nur möchte ich wissen wie man die komultative Zählung in einer Zelle haben kann...
    zB.: Ich ändere E7 und G7 zählt . Darauf ändere ich e8 und g7 zählt. Wenn ihr mir saen könntet wie man den Code dafür ändern müsste wäre ich euch sehr dankbar. Danke auch schon im voraus. :)

  10. Hallo,

    ausgehend von den Vorgaben der vorherigen Postings in diesem Thread, musst du die beiden rot gekennzeichneten Zeilen ändern, um eine (kumulative) Änderungszählung nur in Zelle G7 durchzuführen:

    Option Explicit
    
    Private Sub Worksheet_Calculate()
      'Dieses Ereignis tritt ein, nachdem das ARBEITSBLATT neu berechnet wurde
      Dim rngIstNeuberechnet As Range
      Dim rngVergleichswerte As Range
      Dim rngZelle As Range, SpalteZ_Diff As Long
      '
      'Bereich der Zellen, die überprüft werden sollen, ob sich durch Berechnungen ihr Wert geändert hat:
      '(Im Bereich G8:G71 sind die Zähler enthalten, die mitzählen, wie oft eine solche Zelländerung erfolgte)
      Set rngIstNeuberechnet = Range("E8:E71")
      '
      'Bereich der Zellen, die die Werte aus E8:E71 bis vor der letzten Neuberechnung des Arbeitsblattes enthalten:
      Set rngVergleichswerte = Range("Z8:Z71")  '<--- eventuell anderen Bereich wählen!!
      '
      SpalteZ_Diff = rngVergleichswerte.Column - rngIstNeuberechnet.Column
      Application.EnableEvents = False
      For Each rngZelle In rngIstNeuberechnet.Cells
        With rngZelle
          If .HasFormula Then
            If .Value <> .Offset(0, SpalteZ_Diff) Then
              .Offset(0, SpalteZ_Diff) = .Value
    [COLOR="#FF0000"]          Range("G7").Value = Range("G7").Value + 1
    [/COLOR]        End If
          End If
        End With
      Next rngZelle
      Application.EnableEvents = True
      '
    End Sub
    '
    Private Sub Worksheet_Change(ByVal Target As Range)
      'Dieses Ereignis tritt ein, nachdem der User im Target-Bereich neue WERTE eingegeben hat:
      If Intersect(Target, Range("E8:E71")) Is Nothing Then Exit Sub
      With Target
        If .Count = 1 Then
    [COLOR="#FF0000"]      Range("G7").Value = Range("G7").Value + 1
    [/COLOR]    End If
      End With
    End Sub
    

  11. Hallo liebe Excel Freunde,
    ich schreibe in diesem älteren Thread da er mir bei einem Problem geholfen hat. Dafür hat er ein neues Verursacht.

    Ich habe den Code von Schatzi verwendet um Änderungen in Zellen zu zählen.

    Das funktioniert auch super! Vielen Dank.

    Was nun aber den Anwendern Probleme bereitet, ist das der "Rückgängig" Button oben links nicht mehr funktioniert. Wenn diese also aus Versehen einen Eintrag löschen können Sie diesen nicht wieder herstellen. Wir verwenden Excel 2016.

    Habt ihr eine Idee wie ich Änderungen zählen kann und die Anwender gleichzeitig den Button verwenden können?

    Vielen Dank schön einmal an alle die dies mitlesen und ein noch größeres Danke für alle Lösungsideen.

    Gruß L

  12. Hallo,

    Option Explicit
    
    Dim rngLetzteZelle As Range               'Zelle Spalte E
    Dim varLetzterWert(1 To 2) As Variant     'Werte Spalte E Alt(=1) bzw Neu(=2)
    
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("E8:E71")) Is Nothing And Target.Count = 1 Then
         
         Set rngLetzteZelle = Target       'Merke Target-Zelle Spalte E
         varLetzterWert(2) = Target.Value  'Merke Target-NeuWert Spalte E
         On Error GoTo Err_Change
         With Application
            .EnableEvents = False
            .Undo                       '"Undo" um Target-AltWert Spalte E zu ermitteln!!
         End With
         With Target
            varLetzterWert(1) = .Value               'Merke Target-AltWert Spalte E
            .Value = varLetzterWert(2)               'Speichere Target-NeuWert Spalte E
            .Offset(0, 2).Value = .Offset(0, 2) + 1  'Speichere NeuWert Spalte G
         End With
    Err_Change:
         With Application
            .EnableEvents = True
            .OnUndo Text:="UndoInkrem", Procedure:="[COLOR="#FF0000"]Tabelle1.[/COLOR]DekremSUB"
         End With
         
       End If
    End Sub
    
    Sub DekremSUB()
      Application.EnableEvents = False
      On Error GoTo Err_dekrem
      With rngLetzteZelle
        .Value = varLetzterWert(1)                    'Speichere Target-AltWert Spalte E
        .Offset(0, 2).Value = .Offset(0, 2).Value - 1 'Speichere AltWert Spalte G
      End With
    Err_dekrem:
      Application.EnableEvents = True
    End Sub
    

    Installation:
    Vorgenannte 2 Makros sind ins Codemodul des Arbeitsblattes zu kopieren anstelle deines Makros. Die rot gekennzeichnete Stelle ist der interne Name des Codemoduls - nicht zu verwechseln mit der Tabulator-Beschriftung des Arbeitsblattes, zu dem dieses Codemodul gehört! Dieser interne Name ist im Projektexplorer des VBA-Editors ersichtlich.
    Sollte das Projekt-Explorer-Fenster im VBA-Editor nicht zu sehen sein, kann es mittels Tastenkombination Strg+R eingeblendet werden.
    Dort sind in einer hierarchischen Auflistung die wichtigsten Objekte der Excel-Mappe zu sehen, angefangen vom "VBAProjekt (…)" über die "Microsoft Excel Objekte" und schließlich "DieseArbeitsmappe", "Tabelle1 (Test)", "Tabelle2 (Tabelle2), …"
    Dabei ist der rot gekennzeichnete Eintrag exakt der im Makro an der roten Stelle benötigte Name, während der blau gekennzeichnete, in Klammern befindliche Eintrag die hier nicht benötigte Tab-Beschriftung des Arbeitsblattes ist.

    Hinweise zum Ablauf:
    1) Es werden im 1. Makro (Worksheet_Change) die benötigten Vorgängerwerte der Spalte E und G der betreffenden Zelle ermittelt, obwohl sie nicht mehr angezeigt werden im Arbeitsblatt
    2) Es wird ein Makro (DekremSUB) als Undo-Makro festgelegt, wobei dieser Aktion der Name "UndoInkrem" zugewiesen wird. Dieser Name ist dann auch in der UNDO-Liste des UNDO-Pfeils im Arbeitsblatt sichtbar.
    3) Wird der Undo-Pfeil nach Aktualisierung der Spalten E bzw. G gedrückt, werden erwartungsgemäß die Werte besagter Spalten wieder zurückgestellt auf ihre Altwerte.
    4) Die Punkte 1)+2) sind für die Anwender ohne Belang - ich habe sie hier nur zum besseren Verständnis aufgeführt, sie laufen auch vollautomatisch ab.

  13. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

    Hallo Anton Exl,
    erst einmal vielen Dank das du dich meinem Problem annimmst. Ich gestehe ich habe etwas Respekt vor der Aufgabe dies umzusetzen, habe mir aber den heutigen Vormittag dafür freigehalten. Ich habe leider nicht meine angepasste Version eingestellt und muss nun auch erfolgreich deinen Code auf meine Bereiche anpassen.

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:AN500")) Is Nothing And Target.Count = 1 Then _
    Target.Offset(0, 42) = Target.Offset(0, 42) + 1
    End Sub

    Ich Berichte von meinen Erfolgen.

    Liebe Gruß L

Thema:

Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

  1. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen - Similar Threads - Wert Zelle ändert

  2. Duplikate entfernen, Zellen zählen, Werte hinzufügen

    in Microsoft Excel Hilfe

    Duplikate entfernen, Zellen zählen, Werte hinzufügen: Hallo Leute, ich arbeite aktuell noch händisch mit meinen Werten und wollte das ganze per VBA umsetzen. Leider ist das ganze ein bisschen kompliziert. Ich habe mal eine TB angehangen wo ich auf...

  3. Zelle formatieren wenn wenn bestimmter Wert in Zelle vorhanden

    in Microsoft Excel Hilfe

    Zelle formatieren wenn wenn bestimmter Wert in Zelle vorhanden: Hallo Leute, Ich hab in einer Spalte Zellen wo Werte mit "SW" oder "MN" oder "AN" oder "N" drinnen stehen. und die Zellen wo einer der Werte(Buschstaben) stehen sollen Fett formatiert werden....

  4. Zelle aus Bereich auslesen, Wert aus nebenstehender Zelle in andere Zelle kopieren.

    in Microsoft Excel Hilfe

    Zelle aus Bereich auslesen, Wert aus nebenstehender Zelle in andere Zelle kopieren.: Moin Ihr Spezialisten. Ich habe mit eine Exceltabelle gebaut in der ich jedes Jahr für ein großes Schützenfest den Sitzplan für die Vereine eintrage. Nun möchte ich den Plan automatisieren, was in...

  5. Makro starten, wenn Wert einer bestimmten Zelle sich durch Formel ändert

    in Microsoft Excel Hilfe

    Makro starten, wenn Wert einer bestimmten Zelle sich durch Formel ändert: Hallo, ich habe schon eine Stunde im Netz herum gesucht und finde keine befriedigende Lösung für folgendes Problem: Es soll automatisch ein Makro gestartet werden, wenn sich der Wert einer...

  6. Zelle sperren / entsperren, wenn Wert in anderer Zelle sich ändert

    in Microsoft Excel Hilfe

    Zelle sperren / entsperren, wenn Wert in anderer Zelle sich ändert: Hallo zusammen, ich habe mal wieder ein kleines Problem. In der angehängten Tabelle soll Folgendes durch ein Makro ausgeführt werden: Zellen E4:E7 entsperren, falls C8 >= 5 wird Zellinhalt E4:E7...

  7. Wenn sich der Wert einer Zelle ändert Makro aufrufen

    in Microsoft Excel Hilfe

    Wenn sich der Wert einer Zelle ändert Makro aufrufen: Hallo Mitforisten, ich habe folgendes Problem: Ich habe ein Makro geschrieben, möchte aber, dass es nur aufgerufen wird, wenn sich der Wert in Zelle A1 z.B. ändert. Ist so etwas möglich? Gruß...

  8. Zelle inhalt/Wert ändert sich über Combobox dann eine andere Zelle leeren

    in Microsoft Excel Hilfe

    Zelle inhalt/Wert ändert sich über Combobox dann eine andere Zelle leeren: Hallo zusammen Ich habe folgendes Problem mit meinem Code. Wenn ich eine Eingabe in B3 mache wird die Zelle C5 geleert bzw. wenn ich einen eingabe in C5 mache wird B3 geleert. Das klappt...

Users found this page by searching for:

  1. excel bei aktualisierung alten zelleninhalt in nachbarzelle kopieren

    ,
  2. excel wert aktualisieren und alte werte in neuer zelle speichern

    ,
  3. vba wenn änderung in eine zelle in eine Spalte dann

    ,
  4. excel datum automatisch ändern wenn wert in zelle geändert wird,
  5. zelle historie speichern,
  6. excel wenn wert ändert schreibe,
  7. excel formel zelle geändert,
  8. geänderte zeilen anzeigen,
  9. wenn währt sich ändert dann 1,
  10. 1 wenn sich ein Wert verändert,
  11. excel wenn sich die summe nicht ändert dann nichts anzeigen,
  12. Wenn Wert geändert wird dann excel,
  13. excel wenn sich zelle ändert dann,
  14. Excel wenn zelle verändert zelle daneben berechnen