Change-Makro
11.03.2004 14:18:29
Carmen Pfeiffer
ich habe folgendes Problem:
Ich möchte, dass bei Änderungen in Spalte M zwischen den Zeilen 3 und 200 meiner Tabelle je nach Änderung unterschiedliche Aktionen durchgeführt werden.
Wenn jemand in eine Zelle in Spalte M eine 100 einträgt, dann soll in die gleiche Zeile in Spalte O das heutige Datum eingetragen werden und danach fest eingefügt werden.
Wenn jemand eine von 100 abweichende Zahl einträgt, dann soll ein evtl. bereits bestehendes Datum in Spalte O in dieser Zeile wieder gelöscht werden
Wenn jemand einen Eintrag aus Spalte M entfernt, dann soll ein bereits bestehendes Datum in dieser Zeile in Spalte O ebenfalls gelöscht werden.
Habe das ganze bereits mit einem Change-Makro versucht, mein Problem hierbei ist aber, dass dieses Makro nur funktioniert, wenn der User nach Eingabe in Spalte M die Return-Taste drückt. Wenn er mit Tab- oder Pfeiltasten weitergeht oder sogar woanders hinklickt, dann ist das ganze Makro hinfällig:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 13 And Target.Row >= 3 And Target.Row <= 200 And ActiveCell.Offset(-1, 0).Value = 100 Then
ActiveCell.Offset(-1, 2).Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(0, -2).Select
End If
If Target.Column = 13 And Target.Row >= 3 And Target.Row <= 200 And ActiveCell.Offset(-1, 0).Value <> 100 Then
ActiveCell.Offset(-1, 2).Select
Selection.ClearContents
ActiveCell.Offset(0, -2).Select
End If
If Target.Column = 13 And Target.Row >= 3 And Target.Row <= 200 And ActiveCell.Offset(-1, 0).Value = """" Then
ActiveCell.Offset(-1, 2).Select
Selection.ClearContents
ActiveCell.Offset(1, -2).Select
End If
End Sub
Vielleicht weiß jemand eine bessere Idee, evtl. mit einer Schleife. Dabei muss man aber beachten, dass bereits bestehenden Datumsangaben in der Spalte O nicht überschrieben werden.
Danke und viele Grüße
Carmen