Ich habe dieses Makro, das auch wunderbar funktioniert!
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Quelle: Ransi If Intersect(Target, Range("F8:F44, O8:O44")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen If Target = "" Or Target = 0 Then Target.Offset(0, -1).ClearContents Else Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy hh:mm")) End If
End Sub
nun möchte ich hinter der Range noch zusätzlich einen Wert einfügen von P8:P44 jedoch soll hier das Datum dann 2 Spalten nach links angezeigt werden. Ich hoffe ich habe es verständlich ausgedrückt. Wie muss der code geändert werden? Bekomme das nicht hin.
Vieleicht habe ich auch falsch gefragt. Also ich möchte das hinter der Range ..
Code:
Range("F8:F44, O8:O44")
noch ein weiter wert steht! das würde dann so aussehen
Code:
("F8:F44, O8:O44, P8:P44")
dann soll links davon, 2 Spalten weiter das aktuelle Datum erscheinen. Aber nur für die Range P8:P44 Die anderen funktionieren ja. Ist das überhaupt lösbar?
Private Sub Worksheet_Change(ByVal Target As Range) Dim Target As Range 'Quelle: Ransi If Intersect(Target, Range("F8:F44, O8:O44, P8:P44")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen If Target = "" Or Target = 0 Then Target.Offset(0, -1).ClearContents Else If Target(Column) = 16 Then Target.Offset(0, -2) = CDate(Format(Now, "dd.mm.yyyy hh:mm")) Else Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy hh:mm")) End If End If
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
26.07.2022, 15:11 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2022, 15:39 von Beltason.)
Hallo Edgar, danke für deine Hilfe, doch es kommen fehlermeldungen. Ich hänge später eine Testdatei an, da ist es vieleicht einfacher..
LG So, habe mal eine einfache Testdatei erstellt. Sie ist stark vereinfacht, doch kommt sie meiner Tabelle sehr nahe. Natürlich ist in meiner Originaldatei die Zelle und die Spalte anders, doch das sollte ich anpassen können.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("F8:F44, O8:O44, P8:P44")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen If Target = "" Or Target = 0 Then Target.Offset(0, -1).ClearContents Else If Target.Column = 16 Then Target.Offset(0, -2) = CDate(Format(Now, "dd.mm.yyyy hh:mm")) Else Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy hh:mm")) End If End If
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Hallo Edgar, ich habe deinen Code versucht etwas anzupassen, siehe meine angehängte Datei
Es klappt soweit ganz gut, ausser in der letzten Spalte M. Wenn ich dort einen Betrag eingebe, kommt in der Spalte L vorher immer der Wert 44768,70€ raus. Was mache ich falsch? Vieleicht siehst du dir meinen modifizierten Code kurz an.
du musst die Events ausschalten, wenn du in der Tabelle über einen Code Änderungen machst, sonst wird das Change-Ereigniswieder und wieder aufgerufen. Kann zu Fehlausgaben, Endlosschleifen oder Absturz führen: [attachment=44354] [attachment=44355]
die Ursache liegt eher darin, dass die betroffenen Spalte ohne Sinn verändert wurden. Es war bisher von P die Rede, jetzt sind wir bei M! Wenn man solche Veränderungen durchführt, dann sollte man auch wissen was man macht!!!
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D8:D44, H8:H44, L8:L44, M8:M44")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen If Target = "" Or Target = 0 Then Target.Offset(0, -1).ClearContents Else If Target.Column = 13 Then Target.Offset(0, -2) = CDate(Format(Now, "dd.mm.yyyy hh:mm")) Else Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy hh:mm")) End If End If
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.