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

 时间:2024-10-08 22:15:26

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

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

工具/原料

Windows7

Excel2010

方法/步骤

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

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

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

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

3、在VBA编辑器的Sheet1代码框里面输入以下程序代码:PrivateSubWorksheet_Change(ByValTargetAsRange)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生成满足条件的日期

怎么用vba宏代码设置excel打印时水平垂直居中 Excel VBA取消全部隐藏的工作表? 使用VBA判断并填充颜色 在VBA中,如何编写单元格偏移代码? Excel 365如何抽取字符串中特定的字符
热门搜索
魔法少女育成计划 文字图片 墙纸图片大全 国庆节图片 鸳鸯图片