excel 是否有VBA函数可以启用时间表的“开始时间”,从上一个任务的“结束时间”的下一秒开始?

1rhkuytd  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(134)

我正试图为我的团队准备一个时间表。我需要一个函数,使我们能够有时间表的“开始时间"从下一秒的”结束时间“的前一个任务开始。例如:输入项A -开始时间-04:30:00和结束时间-05:00:00,则函数应能够给予输入项B -开始时间-05:00:01等的结果。
我无法找到任何函数,因为我的VBA知识非常有限。这将是伟大的,如果有人能帮助我。

nue99wik

nue99wik1#

你可以用一个简单的公式来计算。
假设您的开始时间在A列,结束时间在B列,请在A列中输入以下公式。由于第一个条目可能需要手动输入(因为没有先前的结束时间),因此从第二行数据开始。

=IF(B2="","",B2+TIME(0,0,1))

(note我的Excel使用;作为参数分隔符)

2w2cym1i

2w2cym1i2#

既然你正在寻找一个VBA的解决方案,这里有一个。它要求你的数据在一个表中,但可以修改工作与常规范围。
三个非常相似的子程序来进行所需的更改。你并不真的需要"新建"按钮,但有些用户可能会喜欢它。

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

结果:

    • 起始表格:**

  • "新建"按钮*

  • "下一时段"按钮*

  • "结束"按钮*

  • "Next Period"(下一个周期)按钮(无周期活动时)*

类似于"新按钮"

  • "结束"按钮(无周期活动时)*

错误信息:

  • "新建"按钮(当周期已激活时)*

错误信息:

相关问题