AW: Programmierung Makro ständige Prüfung auf Änderung
27.04.2015 13:17:51
fcs
Hallo Stefan,
nachfolgend entsprechende Makros, die die OnTime-Methode nutzen, um in regelmäßigen Abständne das Prüfmakro zu starten.
Gruß
Franz
Option Explicit
'Makros in einem allgemeinen Modul der Datei
Public datNextStart As Date
Sub prcOnTimeStart()
Call prcOnTimeMakro
End Sub
Sub prcOnTimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=datNextStart, Procedure:="prcOnTimeMakro", schedule:=False
End Sub
Sub prcOnTimeMakro()
Dim Wert_E3, Wert_B3, Wert_G3
Dim Zeile As Long, Spalte As Long
Dim rngSuchen As Range
With ThisWorkbook.Worksheets("Tabelle1") 'Name ggf. anpassen
Wert_E3 = .Range("E3")
Wert_B3 = .Range("B3")
Wert_G3 = .Range("G3")
End With
With ThisWorkbook.Worksheets("Tabelle2") 'Name ggf. anpassen
'Spalte mit Wert aus B3 in Zeile 3 suchen
Set rngSuchen = .Rows(3).Find(what:=Wert_B3, LookIn:=xlValues, lookat:=xlWhole)
If Not rngSuchen Is Nothing Then
Spalte = rngSuchen.Column
'Zeile mit Wert aus E3 in Spalte A suchen
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngSuchen = .Columns(1).Find(what:=Wert_E3, after:=.Cells(Zeile + 1, 1), _
LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)
If Not rngSuchen Is Nothing Then
For Zeile = rngSuchen.Row To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 1) = Wert_E3 And IsEmpty(.Cells(Zeile, Spalte)) Then
.Cells(Zeile, Spalte) = Wert_G3
End If
Next
End If
End If
End With
datNextStart = Now + TimeSerial(Hour:=0, Minute:=1, Second:=0) 'minwert = 1 Sekunde
Application.OnTime EarliestTime:=datNextStart, Procedure:="prcOnTimeMakro"
End Sub
'Das folgende Makro einfügen unter "DieseArbeitsmappe"
'Beendet vor dem Schließen der Datei ggf. die Ausführung des OnTime-Makros
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call prcOnTimeStop
End Sub