使用VBA生成满足条件的日期
来源:网络收集 点击: 时间:2025-02-19VBA程序编写思路:
在改变单元格的内容时(或者双击键入),那么将要触发VBA程序运行,此时就需要使用到“Worksheet.Change”事件。

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

在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

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

VBA程序注意事项:
(1)使用“Worksheet.Change”事件时,每改变一个单元格(双击键入)可能会执行多次,所以会在代码里边引入“Application.EnableEvents = False”,以执行一次。
(2)单元格的时间格式可以事先在工作表上面设置好,也可以在程序里面进行设置。如果单元格不设置成时间格式,其显示的结果可能是一串数字。
(3)使用“IsNumeric”判断单元格的内容是否为数字时,其空白单元格也会被默认成是数字,此时应当把它排除掉。

个人经验,仅供参考。
EXCELVBA版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1241724.html