Option Explicit
Sub NewStartTime()
Dim TimeSheet As Worksheet
Dim lRow As Long
Set TimeSheet = Sheet3
With TimeSheet
lRow = .Range("A" & Rows.Count).End(xlUp).Row
If .Range("B" & lRow).Value = "" Then
MsgBox "Period Already Active", vbInformation + vbOKOnly, "Error"
Exit Sub
End If
.Range("A" & lRow + 1).Value = Format(Now(), "hh:mm:ss")
End With
End Sub
Sub CycleTime()
Dim TimeSheet As Worksheet
Dim TM As Double
Dim lRow As Long
Set TimeSheet = Sheet3
With TimeSheet
lRow = .Range("A" & Rows.Count).End(xlUp).Row
If .Range("B" & lRow).Value <> "" Then
.Range("A" & lRow + 1).Value = Format(Now(), "hh:mm:ss")
Exit Sub
End If
TM = Now()
.Range("B" & lRow).Value = Format(TM, "hh:mm:ss")
.Range("A" & lRow + 1).Value = Format(TM + TimeValue("00:00:01"), "hh:mm:ss")
End With
End Sub
Sub EndTime()
Dim TimeSheet As Worksheet
Dim lRow As Long
Set TimeSheet = Sheet3
With TimeSheet
lRow = .Range("A" & Rows.Count).End(xlUp).Row
If .Range("B" & lRow).Value <> "" Then
MsgBox "No Time Started", vbInformation + vbOKOnly, "Error"
Exit Sub
End If
.Range("B" & lRow).Value = Format(Now(), "hh:mm:ss")
End With
End Sub
2条答案
按热度按时间nue99wik1#
你可以用一个简单的公式来计算。
假设您的开始时间在A列,结束时间在B列,请在A列中输入以下公式。由于第一个条目可能需要手动输入(因为没有先前的结束时间),因此从第二行数据开始。
(note我的Excel使用
;
作为参数分隔符)2w2cym1i2#
既然你正在寻找一个VBA的解决方案,这里有一个。它要求你的数据在一个表中,但可以修改工作与常规范围。
三个非常相似的子程序来进行所需的更改。你并不真的需要"新建"按钮,但有些用户可能会喜欢它。
结果:
类似于"新按钮"
错误信息:
错误信息: