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