Wert in Zelle, Datum links anzeigen
#1
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ß
Antworten Top
#2
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!
Antworten Top
#3
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#4
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!


Angehängte Dateien
.xlsm   Testdatei.xlsm (Größe: 18,02 KB / Downloads: 2)
Antworten Top
#5
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#6
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


Angehängte Dateien
.xlsm   Testdatei.xlsm (Größe: 24,35 KB / Downloads: 4)
Antworten Top
#7
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]
Antworten Top
#8
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
Perfekt!!!!!!!!!!!!!!!! Das wars...DANKESCHÖN!!!!!!!!!!!!!!!! 18
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste