thefalcon
Goto Top

Statisches Datum in Excel Via Formel oder Makro

Hallo zusammen,

ich habe mal eine Frage und zwar:

Ich habe eine Tabelle, in Spalte B wird via Formel =WENN(D8<>"";HEUTE();" ") das aktuelle Datum und in Spalte C die aktuelle Uhrzeit automatisch eingetragen. Sobald ich jetzt etwas in der Zeile verändere springt die Uhrzeit und das Datum auf das aktuelle. Wie kann ich jetzt sagen das die Werte Fix bleiben?

1460d68e231ea07eb5bbe519f9c5f9fb

Gruß

Alexander

Content-Key: 253582

Url: https://administrator.de/contentid/253582

Printed on: April 19, 2024 at 08:04 o'clock

Member: rubberman
Solution rubberman Nov 01, 2014 updated at 16:28:59 (UTC)
Goto Top
Hallo Alexander,

mit einer Formel wird das nicht funktionieren, per Makro schon.
Öffne den VBEditor mit Alt+F11. Doppelklicke links auf die entsprechende Tabelle und füge rechts folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count = 1 And Target.Column = 4 Then
        If Not IsEmpty(Target) And IsEmpty(Cells(Target.Row, 2)) And IsEmpty(Cells(Target.Row, 3)) Then
            Cells(Target.Row, 2) = Date
            Cells(Target.Row, 3) = Time
        End If
    End If
End Sub
Stelle sicher, dass die Zellen in den Spalten B und C wirklich leer sind (keine Formeln oder ähnliches).

Grüße
rubberman
Member: TheFalcon
TheFalcon Nov 01, 2014 updated at 17:05:45 (UTC)
Goto Top
Perfekt Danke!!!!!


Kann ich das auch noch erweitern auf Spalte 12? Quasi wenn ich in Spalte 13 etwas eintrage soll die Spalte davor (12) das aktuelle Datum ausgeben

Gruss

Alexander
Member: rubberman
rubberman Nov 01, 2014 at 17:35:19 (UTC)
Goto Top
Hallo Alexander,

natürlich kann man das.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count = 1 And Not IsEmpty(Target) Then
        If Target.Column = 4 _
            And IsEmpty(Cells(Target.Row, 2)) _
            And IsEmpty(Cells(Target.Row, 3)) _
        Then
            Cells(Target.Row, 2) = Date
            Cells(Target.Row, 3) = Time
        ElseIf Target.Column = 13 _
            And IsEmpty(Cells(Target.Row, 12)) _
        Then
            Cells(Target.Row, 12) = Date
        End If
    End If
End Sub

Grüße
rubberman
Member: TheFalcon
TheFalcon Nov 02, 2014 at 08:25:18 (UTC)
Goto Top
Hallo Rubberman,

irgendwie übernimmt er bei mir das nicht. Spalte 2 und drei funktionieren perfekt, aber wenn ich spalte 13 fülle macht er irgendwie nichts ...

Gruss

Alexander
Member: rubberman
rubberman Nov 02, 2014 at 11:06:03 (UTC)
Goto Top
Hallo Alexander,

ich hatte es getestet. Funktioniert bei mir völlig problemlos.

Auch hier gilt dass die Zellen in Spalte 12 vorher leer sein müssen, bitte noch mal prüfen. Auch ein nicht sichtbares Leerzeichen ist ein Zelleninhalt.
Kann auch sein dass du Spalten ausgeblendet hast. Das wird vom Makro nicht berücksichtigt. Spalte 12 ist immer "L" und Spalte 13 immer "M".

Grüße
rubberman
Member: TheFalcon
TheFalcon Nov 02, 2014 at 15:41:53 (UTC)
Goto Top
Hallo rubberman,

jetzt weiss ich wo der Fehler liegt bei mir ist Spalte 13 schon P, besten Dank!!!

Gruss

Alexander
Member: rubberman
rubberman Nov 02, 2014 at 15:52:50 (UTC)
Goto Top
Hallo Alexander,

dann ist es einfach. In Zeile 9 die 13 zu 16 machen und (falls die ausgeblendeten Spalten nicht dazwischen liegen) in Zeile 10 und 12 die 12 zu 15.

Grüße
rubberman
Member: TheFalcon
TheFalcon Nov 05, 2014 at 10:46:47 (UTC)
Goto Top
Hallo Rubberman,

habe noch ein kleines Anliegen

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count = 1 And Not IsEmpty(Target) Then
        If Target.Column = 4 _
            And IsEmpty(Cells(Target.Row, 2)) _
            And IsEmpty(Cells(Target.Row, 3)) _
        Then
            Cells(Target.Row, 2) = Date
            Cells(Target.Row, 3) = Time
        ElseIf Target.Column = 13 _
            And IsEmpty(Cells(Target.Row, 12)) _
        Then
            Cells(Target.Row, 12) = Date
            Cells(Target.Row, 8) = "-"  
            Cells(Target.Row, 11) = " "  
            Cells(Target.Row, 6) = " "  
        End If
    End If
End Sub

Er soll Punkt 13-15 nur so ausfüllen, wenn sie leer sind ansonsten soll der Inhalt drin bleiben. Komme aber nicht auf die Formel

Gruss

Alexander
Member: rubberman
rubberman Nov 05, 2014 at 18:08:14 (UTC)
Goto Top
Hallo Alexander,

hast du dich mal gefragt was die IsEmpty() Funktion macht? face-wink
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count = 1 And Not IsEmpty(Target) Then
        If Target.Column = 4 _
            And IsEmpty(Cells(Target.Row, 2)) _
            And IsEmpty(Cells(Target.Row, 3)) _
        Then
            Cells(Target.Row, 2) = Date
            Cells(Target.Row, 3) = Time
        ElseIf Target.Column = 13 _
            And IsEmpty(Cells(Target.Row, 12)) _
        Then
            Cells(Target.Row, 12) = Date
            If IsEmpty(Target.Row, 8) Then Cells(Target.Row, 8) = "-"  
            If IsEmpty(Target.Row, 11) Then Cells(Target.Row, 11) = " "  
            If IsEmpty(Target.Row, 6) Then Cells(Target.Row, 6) = " "  
        End If
    End If
End Sub
Grüße
rubberman
Member: TheFalcon
TheFalcon Nov 06, 2014 updated at 05:15:58 (UTC)
Goto Top
Hallo Rubberman,

Die sagt doch aus: Wenn die Zeile leer ist soll er sie ausfüllen. face-smile ich wusste nicht wie ich das mit einfüge. Aber so klappt es leider auch nicht.

Gruß

Alexander
Member: rubberman
Solution rubberman Nov 06, 2014, updated at Nov 07, 2014 at 06:59:44 (UTC)
Goto Top
Hallo Alexander.

IsEmpty() gibt "Wahr" zurück, wenn die Zelle leer ist, anderenfalls "Falsch".

Aber so klappt es leider auch nicht.
Dann erkläre noch einmal genau, wie es funktionieren soll.
Im Moment:
  • Wenn die Zelle in Spalte M leer ist dann
    • Datum in Spalte L schreiben
    • Wenn die Zelle in Spalte H leer ist dann
      • in Spalte H ein - schreiben
    • Wenn die Zelle in Spalte K leer ist dann
      • in Spalte K ein Leerzeichen schreiben
    • Wenn die Zelle in Spalte F leer ist dann
      • in Spalte F ein Leerzeichen schreiben

    Betrachte die Einrückungen als Hierarchie bei der Abarbeitung.

    Grüße rubberman
Member: TheFalcon
TheFalcon Nov 07, 2014 at 07:02:33 (UTC)
Goto Top
Hallo Rubberman,

habe es hinbekommen. Danke noch mal für die Tipps!!

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count = 1 And Not IsEmpty(Target) Then
        If Target.Column = 4 _
            And IsEmpty(Cells(Target.Row, 2)) _
            And IsEmpty(Cells(Target.Row, 3)) _
        Then
            Cells(Target.Row, 2) = Date
            Cells(Target.Row, 3) = Time
        ElseIf Target.Column = 13 _
            And IsEmpty(Cells(Target.Row, 12)) _
        Then
            Cells(Target.Row, 12) = Date
            If Cells(Target.Row, 8) = "" Then Cells(Target.Row, 8) = "-"  
            If Cells(Target.Row, 11) = "" Then Cells(Target.Row, 11) = " "  
            If Cells(Target.Row, 6) = "" Then Cells(Target.Row, 6) = " "  
        End If
    End If
End Sub


Gruss

Alexander