Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1828to1832
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bei Zellenänderung MsgBox

Bei Zellenänderung MsgBox
28.04.2021 18:02:13
Pascal
Hi Leute,
ich habe Daten aus einer externen Exceltabelle geladen und ich hätte gerne eine MsgBox, dass sich was geändert hat, wenn sich etwas geändert hat.
der Folgende Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sAdr  As String
sAdr = Range("D6").Address
If Target.Address = sAdr Then
MsgBox "Neue Laborwerte!"
End If
End Sub
führt nur leider zu dem Problem, dass ich die Box bei jeder automatischen aktualisierung bekomme, auch wenn sich der Wert nicht geändert hat.
Ich glaube ich müsste dem Code sagen, dass er nicht die Zelle selber betrachten soll, sonder nur die Zahl die in der Zelle steht richtig?
vielen Dank und Gruß
Pascal

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei Zellenänderung MsgBox
28.04.2021 19:06:52
Oberschlumpf
Hi Pascal,
mit deinem Code bist du noch auf dem falschen Weg - mit deinen abschließenden Überlegungen kommst du der Sache schon näher :-)
Ja, du musst den Wert in Zelle D6 überwachen.
Das heißt, der Code muss sich den "alten" Wert aus D6 merken und diesen bei Änderung in D6 mit dem "neuen" Wert vergleichen.
Das Ereignis "Änderung" (Change) findet auch dann statt, wenn in D6 der selbe Wert erneut eingetragen wird, der vorher auch schon drin stand.
Somit sollte dein Code vielleicht so aussehen (ungetestet)
1. Du benötigst ein allgemeines Modul
Schreib ins allg. Modul diesen Code

Option Explicit
Public pAltOderNeu As Variant
2. Ändere deinen Code wie folgt:

Private Sub Workbook_Open()
pAltOderNeu = Range("D6").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sAdr  As String
sAdr = Range("D6").Address
If Target.Address = sAdr Then
If pAltOderNeu  Target.Value Then
Application.EnableEvents = False
pAltOderNeu = Target.Value
MsgBox "Neue Laborwerte!"
Application.EnableEvents = True
End If
End If
End Sub
Was passiert?
1. Im allg. Modul wird die Variable pAltOderNeu "öffentlich" deklariert. Öffentlich bedeutet, dass diese Variable im gesamten Code den ihr zugewiesenen Wert behält
2. Beim Öffnen der Datei erhält pAltOderNeu als erstes den Wert aus Zelle D6 zum Zeitpunkt des Öffnens der Datei; z Bsp den Wert 10
3. Wenn du erneut Werte aus der externen Tabelle lädtst, wird, wie vor meiner Änderung, auch erst dann reagiert, wenn in Zelle D6 etwas eingetragen wird.
Wenn die Eintragung in D6 wieder 10 ist, passiert gar nix, weil ja die öffentliche Variable pAltOderNeu auch den Wert 10 hat.
NUR WENN in D6 ein anderer Wert als 10 eingetragen wurde, wird die MsgBox angezeigt.
beachte: 10 ist hier nur ein Bsp-Wert; das Ganze funktioniert mit jedem anderen Wert.
Hilfts?
Wenn nicht, zeig bitte per Upload eine Bsp-Datei, in der eben der obige Code Zelle D6 "überwacht", und zeig auch per Upload eine "externe Exceltabelle" mit Bsp-Daten, die eingefügt werden sollen.
Ach ja, die erste Bsp-Datei muss natürlich den Code enthalten, mit dem die Daten aus der externen Datei eingetragen werden.
Ciao
Thorsten
P.S. ich merke gerade, beide Codezeilen mit Application.EnableEvents... kannst du, glaub ich, löschen - bin aber nicht sicher; du kannst ja alles mit oder ohne diese Zeilen testen
Anzeige
AW: Bei Zellenänderung MsgBox
28.04.2021 19:10:12
Sigi.21
Hallo,
dies sollte reichen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("D6") Then
MsgBox "Neue Laborwerte!"
End If
End Sub
Gruß
Sigi
AW: Bei Zellenänderung MsgBox
28.04.2021 19:46:59
Oberschlumpf
Hi Sigi,
und was ist, wenn der neu eingetragene Wert in D6 der selbe Wert ist, der auch vorher in D6 stand?
Auch dann würde die MsgBox gezeigt - was ja dann nicht passieren soll, oder?
Ciao
Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige