微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Excel VBA 中,尝试将输入的月份数字转换为完整日期

如何解决在 Excel VBA 中,尝试将输入的月份数字转换为完整日期

您好,我正在尝试将输入的月份数字转换为当前年份 (mm/dd/yyyy) 的该月最后一天的完整日期。例如,如果用户要输入“01”,我需要存储日期“01/31/2021”。如果他们输入“11”,那就是“11/30/2021”。我觉得我只是在放屁,它应该是一些简单的事情,但我无法弄清楚。

截至目前,我正在使用此代码

Dim stopDate,defaultDate As String

If (Day(Now()) < 10) Then
    defaultDate = Format(WorksheetFunction.EoMonth(Now(),-2),"mm/dd/yyyy")
Else
    defaultDate = Format(WorksheetFunction.EoMonth(Now(),-1),"mm/dd/yyyy")
End If
stopDate = InputBox("Input the last day of the last month (mm/dd/yyyy) of the 12 month period.","User date",defaultDate)

所以如果今天的日期在当月的前 9 天之内,则认为前一个月的最后一天,如果过了当月的前 9 天,则认为前一个月的最后一天上个月。这个认日期是我们大部分时间都需要的,但是如果需要更改认日期,那么用户必须输入新的月份和该月的最后一天,我想避免麻烦。如果用户不必知道并输入他们需要的月份的最后一天,例如“09/30/2021”将其存储在 stopDate 变量中,他们只需输入“09”并输入“09/ 30/2021" 存储在 stopDate 变量中

解决方法

试试:

Function someDate(mnth As Long) As Date
    someDate = DateSerial(Year(Date),_
        mnth - IIf(Day(Date) > 9,1),0)
End Function

如果我理解你在做什么,如果今天的日期 >9,它应该返回上个月的最后一天,否则它将返回上个月的最后一天。

通过在 0 函数中使用 Day 作为 Dateserial 参数获得上个月的最后一天。

,

感谢 Ron Rosenfield,我能够解决问题并使用 DateSerial 函数和 1 行额外代码完成所需的工作

Dim month As Long
Dim stopDate,defaultMonth As String

If (Day(Now()) < 10) Then
        defaultMonth = Format(WorksheetFunction.EoMonth(Now(),-2),"mm")
    Else
        defaultMonth = Format(WorksheetFunction.EoMonth(Now(),-1),"mm")
    End If
    month = InputBox("Input the last month (mm) of the 12 month period there is data for.","User date",defaultMonth)
    stopDate = DateSerial(Year(Date),month + 1,0)
,

这可以减少 - 并且尺寸缺乏一点 - 所以:

Dim month           As Integer
Dim stopDate        As Date 
Dim defaultMonth    As String

defaultMonth = Format(DateAdd("m",-1,DateAdd("d",-9,Date)),"mm")
month = Val(InputBox("Input the last month (mm) of the 12 month period there is data for.",defaultMonth))
stopDate = DateSerial(Year(Date),0)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?