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

 时间:2026-02-14 09:25:07

1、VBA程序编写思路:

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

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

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

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

3、在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

使用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如何抽取字符串中特定的字符
  • 热门搜索
    山药的功效与作用 幼儿园安全教育知识 家居风水知识 减肥运动方法 焦三仙的功效与作用 夜已深还有什么人 红霉素的作用 什么是意识流 槐角丸的功效与作用 河南有什么好玩的地方