Hallo,
der relevante Teil in Modul1 könnte dafür so aussehen:
Option Explicit
Private Const WORKSHEET_NAME As String = "Tabelle1"
Private Const WORKSHEET_COLUMN As String = "A"
Private Const WORKSHEET_COLUMN_STATUS As String = "B"
Private Const WORKSHEET_COLUMN_STATUS_DETAILED As String = "C"
Private Const WORKSHEET_COLUMN_STATUS_TIME As String = "D"
Private Const TIME_FORMAT As String = "dd.mm.yyyy Hh:Nn:Ss" 'https://msdn.microsoft.com/de-de/library/office/gg251755.aspx
Public Sub add_datetime(ByVal Statustext As String, Optional ByVal Detailtext As String = vbNullString, Optional ByVal markieren As Boolean = False)
Dim wks As Worksheet
Dim l As Long
Set wks = Worksheets(WORKSHEET_NAME)
With wks
l = .Cells(.Rows.Count, WORKSHEET_COLUMN).End(xlUp).Row + 1
.Cells(l, WORKSHEET_COLUMN).Value = Format(Now, TIME_FORMAT)
.Cells(l, WORKSHEET_COLUMN_STATUS).Value = Statustext
.Cells(l, WORKSHEET_COLUMN_STATUS_DETAILED).Value = Detailtext
If Not .Cells(l - 1, WORKSHEET_COLUMN) = vbNullString Then
.Cells(l, WORKSHEET_COLUMN_STATUS_TIME).Value = DateDiff("s", TimeValue(.Cells(l - 1, WORKSHEET_COLUMN).Value), TimeValue(.Cells(l, WORKSHEET_COLUMN).Value), vbUseSystemDayOfWeek, vbUseSystem)
End If
.UsedRange.Columns.AutoFit
If markieren Then
.Range(.Cells(l, WORKSHEET_COLUMN), .Cells(l, WORKSHEET_COLUMN_STATUS_DETAILED)).Interior.Color = vbRed
End If
End With
Set wks = Nothing
End Sub
Sub Schaltfläche2_Klicken()
Call add_datetime("i.O.")
End Sub
Sub Schaltfläche3_Klicken()
UserForm2.Show vbModeless
End Sub
Die Differenz zwischen den Einträgen wird in Sekunden ausegegeben.
Gruß
|