excel - 日期函数将 DD-MM-YYYY 更改为 MM-DD-YYYY 输出
问题描述
我正在为员工设置一个用户表单来填写数据。他们需要填写像 DD-MM-YYYY 这样的日期,输出也必须是 DD-MM-YYYY。但是,我使用的代码将输入 5-12-2019 (DD-MM-YYYY) 更改为输出 12-5-2019 (MM-DD-YYYY)。在用户表单中,当您将其转移到您的 Excel 工作表时,它会保持 (DD-MM-YYYY) 的预期。如果月份高于 13,则不会更改,因此输入 13-12-2019 (DD-MM-YYYY) 保持输出 13-12-2019 (DD-MM-YYYY)。代码怎么可能改变输出但不是每次都以相同的方式,我在代码中做错了吗?
Private Sub TextBox1_BeforeUpdate(ByVal cancel As MSForms.ReturnBoolean)
If IsDate(Me.TextBox1.Text) Then
Me.TextBox1.Text = Format(Me.TextBox1.Text, "DD-MM-YYYY")
Else
MsgBox "Vul een geldige datum in", vbRetryCancel + vbCritical
End If
End Sub
Public Function IsTime(Expression As Variant) As Boolean
If IsDate(Expression) Then
IsTime = (Int(CSng(CDate(Expression))) = 0)
End If
End Function
解决方案
- 将日期读取为字符串。例如
5-12-2009
。 - 按 分割字符串
-
。 - 第 0 个值是日,第 1 个是月,第 2 个是年。
- 从那里,您有一个功能齐全的日期,使用
DateSerial()
.
Public Function StringToDate(myInput As String) As Date
Dim day As Long
Dim month As Long
Dim year As Long
Dim dateArray As Variant
dateArray = Split(myInput, "-")
day = dateArray(0)
month = dateArray(1)
year = dateArray(2)
StringToDate = DateSerial(year, month, day)
End Function
Public Sub Main()
Debug.Print month(StringToDate("05-10-2001"))
Debug.Print StringToDate("05-10-2001")
End Sub
推荐阅读
- json - 无法在 tableView 单元格中正确设置 JSON 中的图像
- python - stddev 功能的改进
- java - minecraft player.sendMessage 命令插件不起作用
- visual-studio-code - VSCode - 从导航建议中禁用向上/向下键
- swift - 如何在 SWIFT 中停止 tokbox 屏幕共享
- python - Python authlib flask - 如何撤销令牌/注销
- html - jQuery - 用于在 3 级文件夹结构中打开第一级文件夹的选择器
- python - 我试图使用 python 和 django 1.9 为苹果发送身份验证请求,但总是给我 unsupported_grant_type
- bash - 在 for 循环中查找命令
- python - 基于多索引 pandas 数据框的 matplotlib 绘制误差线