Hi Ich melde mich einmal wieder.
Ich habe ein kleines Makro, mit dem ich überwache ob in einer bestimmten Spalte ein Change Ereigniss stattfindet.
Tut es das, soll in der der danebenstehenden Zelle eine Formel eingebaut werden die ein Datum Heute() enthält.
Danach entferne ich die Formel aus der Zelle und füge den reinen Wert ein.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
If Target.Column = 18 Then
Line = Target.Row
Range("S" & Line).Select
ActiveCell.Formula2Local = "=Heute()+2"
If Range("S" & Line).HasFormula = True Then
Range("S" & Line).Value = Range("S" & Line).Value
End If
End If
GoTo Ende
ErrorHandler:
MsgBox "Mist"
Exit Sub
Ende:
End Sub
Wenn ich den Code ablaufen lasse, indem ich in Zelle "R3" etwas ändere läuft das Programm durch bis er ActiveCell.Formula2Local = "=Heute()+2" passiert hat.
Nun hat er in der Zelle "S3" etwas verändert, weshalb er wieder von vorne startet, bei If Target.Column = 18 Then bemerkt das es nicht zutrifft, und mit End If weitermacht. Danach läuft das erste Programm weiter, bis er die Formel entfernt Range("S" & Line).Value = Range("S" & Line).Value und wieder von vorne beginnt.
Auch dieser lauf wird durch If Target.Column = 18 Then beendet. Vom Prinzip her läuft das Programm durch, wird aber immer wieder durch den Change Aufruf unterbrochen.
das Programm wird also wärend einer Änderung 3x durchlaufen.
Meine Frage: kann man die Change Erkennung während des Ablaufs unterbrechen und vor End Sub (Exit Sub) wieder einschalten, damit der Code nur einmal durchläuft?
|