excel - 在 Excel VBA 中,尝试将输入的月份数转换为完整日期
问题描述
您好,我正在尝试将输入的月份数转换为包含当年该月最后一天的完整日期(mm/dd/yyyy)。例如,如果用户要输入“01”,我需要存储日期“01/31/2021”。如果他们输入“11”,那将是“2021 年 11 月 30 日”。我觉得我只是在放屁,应该很简单,但我想不通。
截至目前,我正在使用此代码
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, 0, 1), 0)
End Function
如果我了解您在做什么,如果今天的日期>9,这应该返回上个月的最后一天,否则它将返回前第二个月的最后一天。
上个月的最后一天通过函数中的0
forDay
参数获取Dateserial
。
推荐阅读
- sql - 防止同时执行存储过程
- spring - spring-data-reference (arangodb) 的 @Ref 是否使用了对引用对象的渴望或延迟获取?
- spring-boot - 允许 NGINX 通过 http 向另一个端口发送请求
- python - 在 Python 中何时使用生成器函数以及何时使用循环
- django - 在不可调用的 python3 django models.py 中键入错误 str
- oracle - 将 micronaut-data 与 JDBC 一起使用时如何获取 DB 序列值
- python - 在 iManage 上访问文档
- android - React-Native 禁用滑动手势以在嵌套的 StackNavigator 特定屏幕中打开抽屉
- ios - 将json数组发送到alamofire
- go - 在 golang 的地图中使用指针