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-ID: 253582

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

Ausgedruckt am: 26.11.2024 um 17:11 Uhr

rubberman
Lösung rubberman 01.11.2014 aktualisiert um 17:28:59 Uhr
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
TheFalcon
TheFalcon 01.11.2014 aktualisiert um 18:05:45 Uhr
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
rubberman
rubberman 01.11.2014 um 18:35:19 Uhr
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
TheFalcon
TheFalcon 02.11.2014 um 09:25:18 Uhr
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
rubberman
rubberman 02.11.2014 um 12:06:03 Uhr
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
TheFalcon
TheFalcon 02.11.2014 um 16:41:53 Uhr
Goto Top
Hallo rubberman,

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

Gruss

Alexander
rubberman
rubberman 02.11.2014 um 16:52:50 Uhr
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
TheFalcon
TheFalcon 05.11.2014 um 11:46:47 Uhr
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
rubberman
rubberman 05.11.2014 um 19:08:14 Uhr
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
TheFalcon
TheFalcon 06.11.2014 aktualisiert um 06:15:58 Uhr
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
rubberman
Lösung rubberman 07.11.2014 aktualisiert um 07:59:44 Uhr
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
TheFalcon
TheFalcon 07.11.2014 um 08:02:33 Uhr
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