2009-08-06 5 views
0

Ich habe eine Excel-Zelle, deren Wert jede Minute aktualisiert wird.VBA-Funktion zur Warnung, wenn der Wert innerhalb eines Zeitrahmens geändert wird

Was ich brauche, ist eine Warnmeldung; während dieser Zellenwert sich zu einer bestimmten Zeit bewegt.

Angenommen, eine Zelle 10 Wert hat:

  • wenn es dann 7 in einer Minute erreicht ich ein Meldungsfenster müssen, dass alarmieren.

  • Wenn es nicht 7 in einer Minute erreicht dann brauche ich keine Warnung.

Bitte helfen Sie mir ein Makro dafür schreiben.

+1

Sie wissen das wahrscheinlich schon, aber man könnte vermuten, dass dieses Excel-Dokument möglicherweise eine Access-Datenbank werden sollte. – Smandoli

Antwort

5

Innerhalb VBA-Editor für Thisworkbook, können Sie den folgenden Code

Dim WithEvents SheetToWatch As Worksheet 

Private Sub SheetToWatch_Change(ByVal Target As Range) 
If Target.Address = "$A$2" Then 
    If Target.Value = 7 Then 
     MsgBox "changed to 7" 
    End If 
End If 
End Sub 
Private Sub Workbook_Open() 
    Set SheetToWatch = Sheets("Sheet1") 
End Sub 

Grundsätzlich ist der Code wird die Referenz von Sheet1 auf die Variable SheetToWatch schreiben, wenn die Arbeitsmappe geöffnet wird. Wenn Sie die Variable mit WithEvents deklarieren, können Sie die Ereignisse erfassen.

Ich verwende Change Ereignis des Arbeitsblatts und überprüfen, ob die Zelle, die geändert wurde, A2 ist. Wenn ja, überprüfe oder vergleiche ich den Wert mit 7 (es kann dynamisch sein und hängt davon ab, wie Sie damit umgehen wollen).

Sehen Sie, ob dies hilft.

+1

SheetActivate wird ausgelöst, wenn das Blatt den Fokus erhält, nicht wenn sich die Daten ändern, oder? – RBarryYoung

+1

@RBarryYoung: Sie haben Recht. Ich habe diesen zusätzlichen Code versehentlich hinzugefügt. Ich werde es jetzt bearbeiten. Vielen Dank!! – shahkalpesh

0

Kann nicht mit einer Funktion gemacht werden, wie ich es mir vorstellen kann.

Wenn Sie den Mechanismus steuern, der die Zelle aktualisiert, können Sie eine von Ihnen geschriebene VBA-Unterroutine aufrufen, stattdessen müssen Sie die Warnung senden und dann die Zelle aus dieser Routine aktualisieren.

Wenn Sie den Aktualisierungsmechanismus nicht steuern, dann kann das einzige, was mir vielleicht einfällt, dass die Zell-, Bereichs- oder Arbeitsblattklassen über ein ChangedDate-Ereignis verfügen, das Sie von VBA abfangen und von dort aus alarmieren können .

Verwandte Themen