使用VBA生成满足条件的日期
在Excel中,有时我们需要根据输入的数值来自动记录当前的时间。本文将介绍如何使用VBA编写程序,在A-C列的单元格输入数值后,对应的D-F列记录当前的时间,并且如果输入为空白或者不是数值,则对应的单元格保持空白。
VBA程序编写思路
首先,我们需要使用到""事件,在改变单元格内容时触发VBA程序运行。下面是具体的步骤:
1. 打开Excel表格,在工作表标签"Sheet1"上单击右键,选择"查看代码"。
2. 在VBA编辑器的Sheet1代码框里输入以下程序代码:
```vba
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ro, co, bo
' 忽略运行过程中可能出现的错误
On Error Resume Next
' 开启代码只执行一次
Application.EnableEvents False
' 定义工作表
Set mysheet1 ("Sheet1")
' 获取改变的单元格的行号和列号
ro
co
' 改变的单元格是否为数值
bo IsNumeric(Target)
' 如果改变的单元格不为空白,在A-C列,且是数值
If Target <> "" And co < 3 And bo True Then
' 设置单元格的时间格式
mysheet1.Cells(ro, co 3).NumberFormatLocal "yyyy-mm-dd hh:mm:ss"
' 把时间写入单元格
mysheet1.Cells(ro, co 3) Now()
End If
' 如果改变的单元格在A-C列且为空白或者不是数值
If co < 3 And (Target "" Or bo False) Then
' 清空对应单元格的日期
mysheet1.Cells(ro, co 3) ""
End If
' 恢复代码只执行一次
Application.EnableEvents True
End Sub
```
使用VBA生成满足条件的日期
回到Sheet1的工作表界面,在A-C列的单元格里输入数据时,将会在D-F列对应的单元格记录日期和时间。
VBA程序注意事项
1. 使用""事件时,每改变一个单元格可能会执行多次,所以要在代码中引入"Application.EnableEvents False",以确保只执行一次。
2. 单元格的时间格式可以事先在工作表上设置好,也可以在程序中进行设置。如果单元格未设置成时间格式,其显示的结果可能是一串数字。
3. 使用"IsNumeric"判断单元格内容是否为数字时,空白单元格也会被默认成是数字,此时需要排除掉它们。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。