Clever-Excel-Forum

Normale Version: Wert in Zelle, Datum links anzeigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe community,

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.

Ganz lieben Gruß
Keiner eine Idee?

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?

Gruß an alle!
Hi,

ungetestet vielleicht so:

Code:
Option Explicit

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
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.

Vielen Dank an alle!
Hi,

dann so:

Code:
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
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.

Ansonsten sieht sehr gut aus....

Danke und LG Reiner
Hallo, 19 

du musst die Events ausschalten, wenn du in der Tabelle über einen Code Änderungen machst, sonst wird das Change-Ereignis wieder und wieder aufgerufen. Kann zu Fehlausgaben, Endlosschleifen oder Absturz führen: 21
[attachment=44354]
[attachment=44355]
Hi,

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
Perfekt!!!!!!!!!!!!!!!! Das wars...DANKESCHÖN!!!!!!!!!!!!!!!! 18