Vinay verwendet ein Excel-Arbeitsblatt zur Dateneingabe. Informationen werden in Spalte A eingegeben, und Vinay möchte die Möglichkeit haben, automatisch eine Zeit in Spalte B neben dem in Spalte A eingegebenen Wert einzufügen, die angibt, wann der Wert eingegeben wurde.

Es gibt verschiedene Möglichkeiten, wie Sie diese Aufgabe ausführen können. Die erste besteht darin, eine Zeit manuell einzugeben, indem Sie die benachbarte Zelle in Spalte B auswählen und Strg + Umschalt + drücken. (das ist das Semikolon). Diese Verknüpfung gibt die aktuelle Zeit in der Zelle ein. Das Problem bei diesem Ansatz ist natürlich, dass er nicht automatisch ist und einige zusätzliche Bewegungen und Tastenanschläge erforderlich sind, um ihn zu implementieren.

Ein besserer Ansatz wäre die Verwendung einer Formel zur Eingabe der Zeit. Die NOW-Funktion gibt das aktuelle Datum und die aktuelle Uhrzeit zurück und Sie können sie in einer Zelle folgendermaßen verwenden:

=NOW()

Natürlich wird diese einfache Formel jedes Mal aktualisiert, wenn das Arbeitsblatt neu berechnet wird. Das bedeutet, dass die Funktion jedes Mal die aktuelle Zeit zurückgibt, wenn Sie einen Wert in Spalte A eingeben. Dies ist unerwünscht, da Sie nicht möchten, dass frühere Zeiten aktualisiert werden. Sie können versuchen, mithilfe einer Formel zu überprüfen, ob sich in Spalte A etwas befindet, wie folgt:

=IF(A3="","",IF(B3="",NOW(),B3))

Das Problem ist, dass eine Formel wie diese einen Zirkelverweis in das Arbeitsblatt einführt, der eine ganze Reihe von Herausforderungen darstellt, mit denen gearbeitet werden muss. Ein besserer Ansatz besteht darin, ein Makro zu erstellen, das bei jeder Eingabe in Spalte A automatisch ausgeführt wird. Klicken Sie mit der rechten Maustaste auf die Registerkarte des Arbeitsblatts, das für die Dateneingabe verwendet wird, und wählen Sie im Kontextmenü die Option Code anzeigen. Das Codefenster für das Arbeitsblatt wird im Visual Basic-Editor angezeigt und anschließend in das Fenster eingegeben:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rCell As Range     Dim rChange As Range          On Error GoTo ErrHandler     Set rChange = Intersect(Target, Range("A:A"))

If Not rChange Is Nothing Then         Application.EnableEvents = False         For Each rCell In rChange             If rCell > "" Then                 With rCell.Offset(0, 1)

.Value = Now                     .NumberFormat = "hh:mm:ss"

End With             Else                 rCell.Offset(0, 1).Clear             End If         Next     End If

ExitHandler:

Set rCell = Nothing     Set rChange = Nothing     Application.EnableEvents = True     Exit Sub ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

Wenn das Makro aktiviert ist, enthält die benachbarte Zelle in Spalte B jedes Mal, wenn Sie etwas in eine Zelle in Spalte A eingeben, Datum und Uhrzeit (so formatiert, dass nur die Uhrzeit angezeigt wird). Wenn Sie etwas in Spalte A löschen, wird auch die benachbarte Zelle in Spalte B gelöscht.

Beachten Sie auch, dass Sie die Einstellung für die NumberFormat-Eigenschaft ändern können, um zu berücksichtigen, wie das Datum angezeigt werden soll. Sie können beispielsweise in ein Zeitformat von zwölf Stunden wechseln, indem Sie „hh: mm: ss“ in „h: mm: ss AM / PM“ ändern.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (3116) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: