2016 - 2024

感恩一路有你

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

浏览量:2516 时间:2024-01-11 12:11:51 作者:采采

在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"判断单元格内容是否为数字时,空白单元格也会被默认成是数字,此时需要排除掉它们。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。