我有一个用户窗体,其中包含一个名为"DateBox"的文本框。我有以下代码:
Private Sub UserForm_Initialize()
DateBox.Value = Format(Date, "d/m/yy")
在表单提交时,我有以下代码来更新 Sheet1 的第一个空单元格
日期 根据表单。 Cells(emptyRow, 1).Value = DateBox.Value
但是,电子表格显示的不是 d/m/yy,而是 m/d/yy。我做了一些搜索,并了解到这与区域设置有关。我不确定更改设置对我是否有帮助,因为此表单将被可能具有不同设置的不同人群使用。
我想知道是否有办法对日期进行硬编码以所需的格式显示?
VBA 以 US-EN 为中心,当涉及到日期时,它希望在尝试将字符串转换为日期时假设MM/DD/YYYY
。
首先,我们要通过解析来自文本框的字符串来强制日期:
Cells(emptyRow, 1).Value = DateSerial(Split(DateBox.Value,"/")(2),Split(DateBox.Value,"/")(1),Split(DateBox.Value,"/")(0))
然后在解析日期后格式化单元格:
Cells(emptyRow, 1).NumberFormat = "d/m/yy"
或者考虑对日期框中的日期dd mmm, yyyy
使用更可接受的格式。 这使得它不那么模棱两可。
感谢克里斯·尼尔森的帮助。