Wenn der Zelleninhalt in Spalte G verändert wird dann fügt mir Excel das Datum und Zeit der Änderung in Spalte C und D ein.
Jetzt habe ich aber das Problem, dass ich das öfters machen muss.
Ich habe also nach G1 lauter Spalten, wo wenn ich dort etwas ändere soll immer eine Spalte daneben das Datum der Änderung stehen.
Hier mein Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(„G5:G100“)) Is Nothing Then Exit Sub
If Target.Value „“ Then
Target.Offset(0, -3).Value = Date
Target.Offset(0, -2).Value = Time
Else
Target.Offset(0, -3).ClearContents
Target.Offset(0, -2).ClearContents
End If
End Sub
Das Problem das sich jetzt stellt, wie bekomme ich das hin, dass hargenau das selbe zB. 10 mal daneben passiert?
Ich habe also nach G1 lauter Spalten, wo wenn ich dort etwas
ändere soll immer eine Spalte daneben das Datum der Änderung
stehen.
Hi Franky,
mir unklar.
Was hat das mit dem Code zu tun, der ja in D und E was einträgt wenn du in G5:G100 was änderst, d.h. bei Änderung in G1 passiert soweiso nix.
Gut, das mal weglassend, ich trage in H7 etwas ein dann soll in I7 das Datum erscheinen? Wenn ich nun in I/ etwas eintrage dann in J7?
Erklär mal bitte genauer was du da planst, vielleicht ne Beispielmappe via FAQ:2861
Also wenn ich für meinen Lehrling eine aufgabe eintrage steht daneben wer und wann diese aufgabe hineingeschrieben hat. jetzt will ich, dass mein lehrling jedes mal wenn er mit einer von diesen arbeiten anfängt rechts daneben bei A --> Anfang ein „X“ hinein machen und Excel soll rechts daneben in der ausgeblendeten zelle das Datum eintragen. Das gleiche wenn Sie fertig mit der Arbeit ist muss sie ein „X“ bei E --> Ende hineinmachen und das Datum sollte wieder eingetragen werden.
zu guter letzt soll sie in der ersten spalte eine „1“ reinmachen wenn sie die Arbeit beendet hat und somit wird die zeile grün und links daneben sollte wieder das datum eingetragen werden.
Ich hoffe ich konnte dir nun ein wenig näher bringen was ich gerne machen möchte.
Gibst Du mit diesen Anweisungen Deinem Lehrling nicht die Möglichkeit bei der Lösungsdauer seiner Aufgaben zu schummeln?.
Du solltest Dir zuerst einige Konstanten deklarieren, die den Spalten, die Du verwendest, relativ eindeutige Namen zuweisen. Für die Spalte, in die das Anfangsdatum eingetragen werden soll, könntest Du z.B. den Namen „colDateStart“ verwenden. Da ich nicht weiß, ob Du bereits mit der Deklaration von Konstanten vertraut bist, kommt hier ein kleiner Beispiel-Code. Füge der Datei ein Modul hinzu über „Einfügen“ > „Modul“ und schreibe den folgenden Code dort hinein:
Public Const colDateStart As Long = 3 'Spalte C
Public Const colTimeStart As Long = 4 'Spalte D
Public Const colInput As Long = 7 'Spalte G
Dann köntest Du mit folgendem Prinzip im Worksheet_Change-Ereignis weitermachen:
Private Sub Worksheet\_Change(ByVal Target As Range)
Select Case Target.Column
Case colInput
If Len(Target.Value) = 0 Then Exit Sub
Cells(Target.Row, colDateStart) = Date
Cells(Target.Row, colTimeStart) = Time
End Select
End Sub
Es könnten dann weitere Konstanten deklariert werden, um für alle verwendeten Spalten einen „Namen“ zu haben. Danach kannst Du in dem „Select Case“-Block jede Spalte abfragen und für jede Spalte einzeln die Bedingungen festlegen, was wann geschehen soll. Ich denke, das könnte Dir schon weiterhelfen.
von diesen arbeiten anfängt rechts daneben bei A --> Anfang
ein „X“ hinein machen und Excel soll rechts daneben in der
ausgeblendeten zelle das Datum eintragen. Das gleiche wenn Sie
fertig mit der Arbeit ist muss sie ein „X“ bei E --> Ende
hineinmachen und das Datum sollte wieder eingetragen werden.
zu guter letzt soll sie in der ersten spalte eine „1“
reinmachen wenn sie die Arbeit beendet hat und somit wird die
zeile grün und links daneben sollte wieder das datum
eingetragen werden.
Links von der ersten Spalte geht nur über Spalten einfügen ).
Die entsprechnden Spalten müßen noch als Datümer formatiert werden. Die Eingabe von „X“ bzw. „1“ kann man noch über Daten–Gültigkeit überwachen.
Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Range)
On Error GoTo Ende
If Target.Row 1 Then Exit Sub
If Intersect(Target, Range("A:A,G:G, H:H, J:J, L:L, N:N, P:stuck\_out\_tongue:, R:R, T:T, V:V")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Column = 7 Then
Target.Offset(0, -3).Value = IIf(Target.Value "", Date, "")
Target.Offset(0, -2).Value = IIf(Target.Value "", Time, "")
ElseIf Target.Column = 1 Then
Target.Offset(0, 1).Value = IIf(Target.Value = "1", Date, "")
Else
Target.Offset(0, 1).Value = IIf(Target.Value "", Date, "")
End If
Ende:
Application.EnableEvents = True
End Sub