我正在尝试为我的工作构建一个任务跟踪器,汇总我花在各种任务上的时间。
目前我正在使用Ctrl +;,Space,Ctrl + Shift +;手动输入每个任务的开始和结束时间。如果可能的话,我想做的是在我将下拉选项设置为"正在进行的工作中的任何时刻,让开始时间列填充当前时间,"然后是结束时间列,在我将其更改为"已关闭的任何时刻执行相同操作。"
有什么想法吗?
答案 0 :(得分:1)
如果Drop Down是一个表单控件(而不是ActiveX控件),那么您可以右键单击它并选择Assign Macro
。
它应默认为DropDown1_Change
,您可以点击New
。
然后粘贴代码“类似”这个:
Sub DropDown1_Change()
If Range("A4") = 1 Then Range("A1") = Now()
End Sub
第一个&应该已经填充了最后一行。
您需要根据需要调整代码。在这个例子中:
Drop Down 1
。 A4
是我的Drop Down的 Cell Link 。 A1
是我想要日期的单元格。1
时运行代码。 如果您的控件恰好是ActiveX DropDown / ComboBox,则步骤类似:
View Code
。 答案 1 :(得分:0)
唯一的方法是使用宏。
在VBA(Excel - > Alt + F11)中,您可以处理创建事件以处理单元格更改等事项。
双击您输入任务跟踪器数据的工作表并添加以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
现在,您可以使用Target
参数来检测已更改的单元格,然后根据更改单元格修改其他单元格。
因此,假设您在第4列中有下拉列表,在第5列和第6列中有开始和结束时间。然后使用下面的代码将根据目标的状态更新开始和结束时间字段:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
If Target.Value = "Work in Progress" Then
Me.Cells(Target.Row, 5).Value = Time
ElseIf Target.Value = "Closed" Then
Me.Cells(Target.Row, 6).Value = Time
End If
End If
End Sub
注意强> 您需要创建一个带有宏的Excel工作簿,这需要您启用它们 - 默认情况下Excel禁用宏 - 所以请注意在被询问时启用它们。
答案 2 :(得分:0)
试试这段代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FirstRow, StatusColumn, CurrentRow, CurrentColumn As Double
FirstRow = 5 'Define here the first row number of data
StatusColumn = 5 'Define here the column number of Status
CurrentRow = Target.Row
CurrentColumn = Target.Column
If CurrentColumn = StatusColumn And CurrentRow >= FirstRow Then
Select Case CStr(Target.Value)
Case "Work In Progress":
Cells(CurrentRow, CurrentColumn + 2) = Format(Now, "MM.dd.yy hh:mm")
Cells(CurrentRow, CurrentColumn + 3) = ""
Case "Closed":
Cells(CurrentRow, CurrentColumn + 3) = Format(Now, "MM.dd.yy hh:mm")
Case Else:
'Some code here...
End Select
End If
End Sub