使用VBA生成满足条件的日期

2025-11-03 00:33:46

1、VBA程序编写思路:

在改变单元格的内容时(或者双击键入),那么将要触发VBA程序运行,此时就需要使用到“Worksheet.Change”事件。

使用VBA生成满足条件的日期

2、打开Excel表格,在工作表标签“Sheet1”上面单击右键,选择“查看代码”。

使用VBA生成满足条件的日期

3、在VBA编辑器的Sheet1代码框里面输入以下程序代码:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ro, co, bo

On Error Resume Next  '忽略运行过程中可能出现的错误

Application.EnableEvents = False    '开启代码只执行一次

Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")  '定义工作表

ro = Target.Row         '获取改变的单元格的行号

co = Target.Column      '获取改变的单元格的列号

bo = IsNumeric(Target)  '改变的单元格是否为数值

If Target <> "" And co <= 3 And bo = True Then   '如果改变的单元格不为空白,在A-C列,且是数值,则

 mysheet1.Cells(ro, co + 3).NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"  '设置单元格的时间格式

 mysheet1.Cells(ro, co + 3) = Now()  '把时间写入单元格

End If

If co <= 3 And (Target = "" Or bo = False) Then '如果改变的单元格在A-C列且为空白或者不是数值,则

 mysheet1.Cells(ro, co + 3) = ""     '清空对应单元格的日期

End If

Application.EnableEvents = True    '恢复代码只执行一次

End Sub

使用VBA生成满足条件的日期

4、回到Sheet1的工作表界面,在A-C列的单元格里面输入数据时,将会在D-F列对应的单元格记录日期和时间。

使用VBA生成满足条件的日期

5、VBA程序注意事项:

(1)使用“Worksheet.Change”事件时,每改变一个单元格(双击键入)可能会执行多次,所以会在代码里边引入“Application.EnableEvents = False”,以执行一次。

(2)单元格的时间格式可以事先在工作表上面设置好,也可以在程序里面进行设置。如果单元格不设置成时间格式,其显示的结果可能是一串数字。

(3)使用“IsNumeric”判断单元格的内容是否为数字时,其空白单元格也会被默认成是数字,此时应当把它排除掉。

使用VBA生成满足条件的日期

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢