Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。 Q:我想要在用户修改工作表指定单元格的内容时,在另一工作表中记录修改的时间。例如,在工作表Sheet1的单元格B2中,每次用户将该单元格值修改为某一大于0的数值时,则在工作表LogB2中记录下其修改的时间。 具体地说,如果在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="">=> ‘将修改单元格时的时间记录到工作表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="">=> 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 Excel整体界面趋于平面化,显得清新简洁。流畅的动画和平滑的过渡,带来不同以往的使用体验。 |
温馨提示:喜欢本站的话,请收藏一下本站!