我有一个用户窗体,其中有一个名为“ DateBox”的文本框。我有以下代码:
Private Sub UserForm_Initialize()
DateBox.Value = Format(Date, "d/m/yy")
在表单提交时,我有以下代码用表单中的“日期”更新Sheet1的第一个空单元格。
Cells(emptyRow, 1).Value = DateBox.Value
但是,电子表格显示的是m / d / yy,而不是d / m / yy。我进行了一些搜索,了解到这与区域设置有关。我不确定更改设置对我有帮助,因为此表格将由可能具有不同设置的不同人群使用。
我想知道是否可以通过某种方式硬编码日期以所需的格式显示吗?
答案 0 :(得分:3)
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
使用更可接受的格式。这样可以减少歧义。
感谢克里斯·尼尔森的帮助。