Excel VBA Private Sub Worksheet_Change(ByVal Target As Range)? Help Programm vom Kollegen Bearbeitet

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

So ganz richtig hast Du das nicht interpretiert. Ich versuche es mal:

Private Sub Worksheet_Change(ByVal Target As Range)
Der Code wird ausgeführt, wenn das Change-Ereignis eintritt, das heißt, wenn irgendwo auf dem Blatt der Wert einer Zelle geändert wird. Dabei wird die Zelle, die geändert wurde in der Variablen Target als Range-Objekt gespeichert.

If Intersect(Target, Range("A7:A100")) Is Nothing Then Exit Sub
Wenn die Target-Zelle NICHT im Bereich A7:A100 liegt, wird der Code abgebrochen.

If Target.Value <> "" Then
Wenn die Zelle, die geändert wurde jetzt NICHT leer ist, dann:

Target.Offset(0, 8).Value = Date
Schreibe in die Zelle in der gleichen Zeile, 8 Spalten weiter (also H) das aktuelle Datum.

Else
Sonst (Alao wenn der Inhalt der Zelle in A gelöscht wurde):

Target.Offset(0, 8).ClearContents
Lösche den Inhalt der Zelle in Spalte H der gleichen Zeile.

Da Problem mit dem Löschen einer ganzen Zeile kannst Du beheben, indem Du noch diese Zeile in Deine Code einfügst:

If Target.Count > 1 Then Exit Sub

Also so:

Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Range("A7:A100")) Is Nothing Then Exit Sub
   If Target.Count > 1 Then Exit Sub
   If Target.Value <> "" Then
      Target.Offset(0, 8).Value = Date
   Else
      Target.Offset(0, 8).ClearContents
   End If
End Sub

Klappt es?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Am besten holst du dir da Hilfe in einem VBA Forum, hier findest du selten Leute die sich so im Excel auskennen ;)

swfan6 
Fragesteller
 10.07.2014, 10:08

na lass dich da mal nicht täuschen hab hier schon viele VBA Fragen gestellt ;D

0