folgenden Code in das Modul der Tabelle:
Gruß
Peter
Wie sieht das ganze dann aus?
das Ganze LÄUFT ständig im Hintergrund. Im VBA-Editor Doppelklick auf die Tabelle, in der der Code arbeiten soll (also Tabelle1, Tabelle2 oder wie Deine Tabelle sonst heißt) und in dieses Modul eintragen (nicht in ein Standardmodul).
Gruß
Peter
leider nicht ganz :-(
Wenn der Zellwert eine Verknüpfung auf eine andere Zelle oder eine andere Tabelle ist, wird keine Aktion ausgelöst.
Die Aktion wird nur bei "Change", als wenn der Zellinhalt verändert wird, ausgelöst. Dieser, nämlich die Formel, wird aber gar nicht verändert.
Workaround:
Aufwändig aber tut:
Mit Application.OnTime in regelmässigen Abständen den Zellwert abfragen und in eine globale Variable schreiben. Dann kannst du den Zellwert mit der Variable vergleichen und bei Änderungen informieren.
Gruss Rainer
Danke für den Hinweis!
Gruß
Peter
Kann man das vielleicht so machen, das ich den Wert aus Zelle A1 in Zelle B1 geschrieben wird und Zelle B1 auf Veränderungen überwacht wird? Allerdings brauche ich ne Schleife, die die veränderungen von A1 nach B1 übernimmt...
Oder wie geht das mit Application.OnTime und in eine globale Variable schreiben, z.b. alle 15 Sekunden auf Veränderungen überprüfen. Bräuchte evtl. mal ein Beispiel-Script!!!
wie Rainer schon schrieb, ziemlich aufwändig. Gib in der Recherche als Suchbegriff mal OnTime ein und folge der zweiten und vierten Fundstelle.
Gruß
Peter
dieser Code überprüft jede Minute, zu definieren unter OnTime, ob der Wert sich geändert hat.
'In ein Modul'In das Klassenmodul "Diese Arbeitsmappe"
Code eingefügt mit Syntaxhighlighter 1.14
Private Sub Workbook_Open()
'Start der Control-Routine
Ctrl_Each_Minute
End Sub
Public CtrlValue, Mldg As Long
Sub Control_each_Minute()
'Variablen erstellen
Dim Qe As Integer
Dim Msg As String, wks As String, myCell As String
'Variablen vorbereiten
Msg = ""
wks = "Tabelle1" 'Tabelle in welcher der Wert steht
myCell = "A1" 'Zelle die geprüft werden soll
'Beim ersten Start muss die Variable geprüft und gefüllt werden
If IsEmpty(CtrlValue) Then
CtrlValue = Worksheets(wks).Range(myCell)
Mldg = 0
End If
'Start für die nächste Kontrolle
Application.OnTime Now() + TimeValue("00:01:00"), "control_each_Minute"
'Meldung wenn der Wert geändert wurde
If Worksheets(wks).Range(myCell) <> CtrlValue Then
Msg = "Der Kontrollwert " & CtrlValue & " hat sich geändert." & Chr$(13)
Msg = Msg & "Möchten Sie den neuen Wert " & Worksheets(wks).Range(myCell) & " als Kontrollwert übernehmen ?"
If Mldg > 0 Then
Qe = MsgBox(Msg, vbCritical + vbYesNo + vbDefaultButton1, "ACHTUNG: " & Mldg & ". ÄÄnderungsinformation")
If Qe = 6 Then
'Übernahme des neuen Wertes als Control wert
CtrlValue = Worksheets(wks).Range(myCell)
'Zurücksetzen des Counters
Mldg = 0
Exit Sub
End If
'Aufaddieren des Counters
Mldg = Mldg + 1
Else
Qe = MsgBox(Msg, vbCritical + vbYesNo + vbDefaultButton1, "ACHTUNG: ÄÄnderungsinformation")
If Qe = 6 Then
'Übernahme des neuen Wertes als Control wert
CtrlValue = Worksheets(wks).Range(myCell)
'Zurücksetzen des Counters
Mldg = 0
Exit Sub
End If
'Aufaddieren des Counters
Mldg = Mldg + 1
End If
End If
End Sub
Gruss Rainer
Wo setze ich denn einen Startbutton hin, mit dem ich durch anklicken bestimmen kann, das ab dann jede Minute geprüft werden soll?
Wo kommt der Stopbutton hin?