体验零代码搭建

excel图表如何记录指定单元格每次修改的时间?

网友投稿  ·  2023-11-28 16:11  ·  低代码  ·  阅读 1181


Q:我想要在用户修改工作表指定单元格的内容时,在另一工作表中记录修改的时间。例如,在工作表Sheet1的单元格B2中,每次用户将该单元格值修改为某一大于0的数值时,则在工作表LogB2中记录下其修改的时间。

Q:我想要在用户修改工作表指定单元格的内容时,在另一工作表中记录修改的时间。例如,在工作表Sheet1的单元格B2中,每次用户将该单元格值修改为某一大于0的数值时,则在工作表LogB2中记录下其修改的时间。

excel图表如何记录指定单元格每次修改的时间?

具体地说,如果在2019年10月24日19时30分30秒,用户将单元格B2中的值修改为280,那么在工作表LogB2中记录下时间2019-10-24 19:30:30;如果在2019年10月25日8时10分15秒又将单元格B2中的值修改为100,那么工作表LogB2中增加一条时间记录2019-10-25 8:10:15。

A:这可以使用工作表事件来完成。

打开VBE,双击工作表Sheet1对象模块,输入代码:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngInput As Range

Dim rngLog As Range

‘要记录其修改时间的单元格

Set rngInput = Range(“B2”)

‘确定单元格是目标单元格

If Intersect(rngInput, Target.Cells(1, 1)) Is Nothing Then Exit Sub

‘修改为小于0的值不记录

If rngInput.Value <= 0 Then Exit Sub

‘将修改单元格时的时间记录到工作表LogB2

With Worksheets(“LogB2”)

‘工作表最后一行

Set rngLog = .Cells(.Rows.Count,1).End(xlUp)

‘确定工作表最后一行单元格含有值

If Len(rngLog.Value) > 0 Then

‘移至下方相邻的空单元格

Set rngLog = rngLog.Offset(1, 0)

End If

End With

‘写入当前时间

rngLog.Value = Now

End Sub

Q:我想增加记录另一个单元格的修改时间,例如单元格D2每次修改的值大于0时,将修改的时间记录到工作表LogD2中,如何编写代码?

A:同样使用工作表事件来完成。

打开VBE,双击工作表Sheet1对象模块,输入代码:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngLog As Range

Dim wksLog As Worksheet

‘根据所修改的单元格

‘赋值相应的工作表

Select Case Target.Cells(1, 1).Address

Case “$B$2”

Set wksLog =Worksheets(“LogB2”)

Case “$D$2”

Set wksLog =Worksheets(“LogD2”)

Case Else

Exit Sub

End Select

‘如果修改的值小于0则不记录修改时间

If Target.Cells(1, 1).Value <= 0 ThenExit Sub

With wksLog

‘工作表数据所在的最后一行

Set rngLog = .Cells(.Rows.Count, 1).End(xlUp)

‘如果最后一个数据单元格包含值

If Len(rngLog.Value) > 0 Then

‘偏移到下方相邻单元格

Set rngLog = rngLog.Offset(1, 0)

End If

End With

‘写入当前时间

rngLog.Value = Now

End Sub


如何让VBA让用户仅能在指定单元格或单元格区域中输入数字 << 上一篇
2023-11-28 16:11
excel表格自定义功能区
2023-11-28 16:11
下一篇 >>

相关推荐