Excel VBA - aktuelles Datum in Zelle / Spalte

Sehr oft kommt die folgende Frage auf: Wie kann ich ein aktuelles Datum in eine Zelle setzen, welches sich nicht am nächsten Tag ändert?

Dieses Problem kann man mit einem Excel Makro angehen. Ich werde Euch hier 3 Beispiele darstellen:

Beispiel 1:

Wir bauen einen Schalter in unser Tabellenblatt ein. Bei Betätigung soll in die letzte Zeile, der Spalte H, dass aktuelle Datum eingefügt werden. Dafür legen wir das folgende Makro hinter das Tabellenblatt:


Option Explicit

Sub Datum()
Dim Loletzte As Long
    Loletzte = IIf(IsEmpty(Worksheets("Tabelle1").Range("H65536")), _
    Worksheets("Tabelle1").Range("H65536").End(xlUp).Row + 1, 65536)
    Worksheets("Tabelle1").Cells(Loletzte, 8) = Date
End Sub

 

Beispiel 2:

Immer wenn in Spalte A etwas eingetragen wird, dann soll in der zugehörigen Zelle, der Spalte B, ein Datum eingetragen werden. Auch der folgende Code gehört hinter das Tabellenblatt:


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim bereich As Range
    Dim zelle As Range
    'Bereich und Tabellenname anpassen
    Set bereich = Sheets("Tabelle1").Range("A1:A100")
    For Each zelle In bereich
        If Not IsEmpty(zelle) Then 
            zelle.Offset(0, 1).Value = Date
        End If
    Next
End Sub

 

Beispiel 3:

Wir wollen dass ein Datum immer mit einem Klick, mit der rechten Maustaste, in eine Zelle der Spalte D eingetragen wird. Hierzu müssen wir als Erstes einmal die normale Funktion der rechten Maustaste deaktivieren. Dazu fügen wir den folgenden Code im VBA Teil hinter Diese Arbeitsmappe ein:


Option Explicit

Private Sub Workbook_Open()
    Application.CommandBars("Cell").Enabled = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CommandBars("Cell").Enabled = True
End Sub


Nun wechseln wir in den Makrobereich unseres Tabellenblatts, wo der Code laufen soll, und fügen dort dieses Makro ein:


Option Explicit

Private Sub Worksheet_BeforerightClick(ByVal Target As Range, Cancel As Boolean)
    Dim Frage As Integer
    If Not Intersect(Target, Range("D:D")) Is Nothing Then
    'Range("D:D") muss auf die Spalte angepasst werden
        If Target.Value = "" Then
            Target.Value = Date
        Else
            If IsDate(Target) Then
                Frage = MsgBox("soll das Datum aktualisiert werden?", vbYesNo)
                If Frage = vbYes Then Target.Value = Date
                If Frage = vbNo Then Exit Sub
                Exit Sub
            End If
            Frage = MsgBox("Es steht kein Datum in der Zelle!" & _
            "Soll dennoch ein Datum eingetragen werden?", vbYesNo)
            If Frage = vbYes Then Target.Value = Date
            If Frage = vbNo Then Exit Sub
        End If
    End If
End Sub

Jetzt müssen wir unsere Tabelle noch einmal abspeichern, schliessen und wieder öffnen. Wenn wir gefragt werden, ob die Makros aktiviert werden sollen, dann stimmen wir natürlich zu. Wenn Ihr jetzt in Tabelle1 mit der rechten Maustaste in eine Zelle der Spalte D klickt, dann wird dort ein Datum eingefügt.

 

Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Weitere Informationen Ok