广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2025-02-19
    【导读】:
    如下表所示,在A-C列的单元格里边输入数值时,对应的D-F列记录当前的时间;如果输入的空白或不是数值,则对应的单元格变成空白。工具/原料moreWindows 7Excel 2010方法/步骤1/5分步阅读

    VBA程序编写思路:

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

    2/5

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

    3/5

    在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

    4/5

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

    5/5

    VBA程序注意事项:

    (1)使用“Worksheet.Change”事件时,每改变一个单元格(双击键入)可能会执行多次,所以会在代码里边引入“Application.EnableEvents = False”,以执行一次。

    (2)单元格的时间格式可以事先在工作表上面设置好,也可以在程序里面进行设置。如果单元格不设置成时间格式,其显示的结果可能是一串数字。

    (3)使用“IsNumeric”判断单元格的内容是否为数字时,其空白单元格也会被默认成是数字,此时应当把它排除掉。

    注意事项

    个人经验,仅供参考。

    EXCELVBA
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_1241724.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 20:54:14  耗时:0.026
    0.0262s