excel - 检查有效日期 - VBA

标签 excel vba validation days

伙计们,我的主要目标是避免无效的日子。

在表 1 中,我有:

  • A1 数据验证年份(从 1900 年到 2019 年)
  • 所有月份的 B1 数据验证
  • C1 我使用更改事件(如果两个字段 A1 和 A2 都不为空)根据所选年份计算所选月份的天数,并创建一个包含所有可用天数的数据验证。

  • 对于天数计算,我使用:
    Option Explicit
    
    Sub test()
    
        Dim ndays As Long
    
        With ThisWorkbook.Worksheets("Sheet1")
    
            ndays = Day(DateSerial(.Range("A1").Value, .Range("B1").Value + 1, 1) - 1)
    
        End With
    
    End Sub   
    

    表结构:

    enter image description here

    有没有一种计算天数的方法?

    最佳答案

    你可以使用:

  • DateValue()函数从你用你的年份和月份值组成的字符串中构建一个日期,并添加任何有效的天数(我选择“1”来确定......)
  • EOMONTH()获取生成日期月份的最后一天的工作表函数:

  • 如下:
    With someSheet
        ...
        nb_days = Day(WorksheetFunction.EoMonth(DateValue(.Range("A1").Value & " " & .Range("B1").Value & " 1"), 0))
        ...
    End With
    

    关于excel - 检查有效日期 - VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55076040/

    相关文章:

    excel - 在excel中重新排列数据

    jquery - MVC3 jquery.validate.unobtrusive 覆盖选项而不编辑源代码?

    php - 插入前检查日期时间字段

    vba - 电子邮件进入收件箱后触发 Outlook 脚本

    vba - 在Excel VBA中通过单元格中的通配符调用宏

    用于循环浏览从特定工作表(索引 3)开始的工作表的 VBA 代码

    javascript 验证特殊字符的索引/位置

    python - 如何将 excel 中的日期时间列插入到 mySQL 中的日期时间字段中?

    excel - excel 2010 中隐藏行的宏

    sql - 工作表范围内定义的名称的表名称是什么?