用户表单文本框-英国日期格式



晚间

我有一个带有日期文本框的用户表单。在电子表格中,日期格式为英国日期格式(dd/mm/yyyy(。当文本框调用电子表格中的信息时,它会将其转换为国际日期格式(mm/dd/yyyy。

我所尝试的一切都失败了,任何帮助都会得到极大的帮助。

非常感谢。

文本框可能使用美国mm/dd/yyyy样式格式化日期,因为这是您计算机的区域设置中定义的格式。改变这一点的一个简单方法是将您的区域设置更改为短日期格式。

但是,您可能希望与其他人共享此UserForm。也不能保证他们的地区设置会以同样的方式配置。

因此,如果您的表单应该始终使用英国格式,而不管用户的设置如何,那么您可以编写这样的格式化函数:

Public Function FormatDate(TheValue As Date) As String
Dim dateSeparator As String
dateSeparator = "/"
FormatDate = Format(Day(TheValue), "00") & dateSeparator & _
Format(Month(TheValue), "00") & dateSeparator & _
Year(TheValue)
End Function

并像这样使用它:

MyUserForm.MyTextBox.Value = FormatDate(inputDateValue)

如果你需要将这种格式解析回日期,你可以创建一个这样的函数:

Public Function UKTextToDate(DateText As String) As Date
Dim yearPart, monthPart, dayPart As String
' Remember that in VBA, String indexes are 1-based, not 0-based!
' UK format: dd/mm/yyyy - year starts at position 7 and runs for 4 characters
yearPart = Mid(DateText, 7, 4)
' month starts at position 4 and runs for 2 characters
monthPart = Mid(DateText, 4, 2)
' day starts at position 1 and runs for 2 characters
dayPart = Left(DateText, 2)
' We should convert the text values back to integers, in order to use them
' in the DateSerial function.
UKTextToDate = DateSerial(CInt(yearPart), CInt(monthPart), CInt(dayPart))
End Function

但是,请注意,以上内容不会检查无效输入。如果用户可以输入任何内容,那么您需要编写一些代码来防止这种情况发生。

希望这能有所帮助!

最新更新