养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

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

时间:2024-10-09 00:47:26

如下表所示,在A-C列的单元格里边输入数值时,对应的D-F列记录当前的时间;如果输入的空白或不是数值,则对应的单元格变成空白。

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

工具/原料

Windows7

Excel2010

方法/步骤

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

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

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

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

3、在VBA编辑器的Sheet1代码框里面输入以下程序代码:PrivateSubW艺皱麾酪orksheet_Change(ByValT锾攒揉敫argetAsRange)Dimro,co,boOnErrorResumeNext'忽略运行过程中可能出现的错误Application.EnableEvents=False'开启代码只执行一次Setmysheet1=ThisWorkbook.Worksheets("Sheet1")'定义工作表ro=Target.Row'获取改变的单元格的行号co=Target.Column'获取改变的单元格的列号bo=IsNumeric(Target)'改变的单元格是否为数值IfTarget<>""Andco<=3Andbo=TrueThen'如果改变的单元格不为空白,在A-C列,且是数值,则mysheet1.Cells(ro,co+3).NumberFormatLocal="yyyy-mm-ddhh:mm:ss"'设置单元格的时间格式mysheet1.Cells(ro,co+3)=Now()'把时间写入单元格EndIfIfco<=3And(Target=""Orbo=False)Then'如果改变的单元格在A-C列且为空白或者不是数值,则mysheet1.Cells(ro,co+3)=""'清空对应单元格的日期EndIfApplication.EnableEvents=True'恢复代码只执行一次EndSub

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

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

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

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

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

© 一点知识