日期格式-美国通缉德国为默认Excel

日期格式-美国通缉德国为默认Excel,excel,date,vba,Excel,Date,Vba,我需要开发一个全球使用的模板,日期格式需要验证并显示为美国格式。问题是,我在德国工作,我尝试过: 但是我想用MM/DD/YYYY将其验证为美国格式,但当以该格式输入时,我会得到无效的日期,但我需要验证MM/DD/YYYY的值。有人知道吗?您可以通过VBA循环您的日期并相应地格式化,而不是使用数据验证,然后,如果其中任何日期输入错误,也可以提示用户,例如: Sub foo() Dim ws As Worksheet: Set ws = Sheets("Sheet1") 'declare and s

我需要开发一个全球使用的模板,日期格式需要验证并显示为美国格式。问题是,我在德国工作,我尝试过:


但是我想用MM/DD/YYYY将其验证为美国格式,但当以该格式输入时,我会得到无效的日期,但我需要验证MM/DD/YYYY的值。有人知道吗?

您可以通过VBA循环您的日期并相应地格式化,而不是使用数据验证,然后,如果其中任何日期输入错误,也可以提示用户,例如:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A

For i = 1 To LastRow
    On Error Resume Next
    If Not IsDate(ws.Cells(i, 1)) Then MsgBox "Incorrect date on row " & i
    'if not date then prompt user
    ws.Cells(i, 1).NumberFormat = "@"
    'format as text

    ws.Cells(i, 1) = Format(Month(ws.Cells(i, 1)), "00") & "/" & Format(Day(ws.Cells(i, 1)), "00") & "/" & Format(Year(ws.Cells(i, 1)), "0000")
    'format as US Date
Next i
End Sub

你在使用VBA吗?或者您愿意使用VBA来实现这一点?最简单的方法是将您的区域设置更改为我们,顺便说一句。@Nacorid我只需要使用VBA,问题是,如果我更改设置就可以了,但是,如果法国有人使用相同的模板,测试将再次出错,因为在法国,再次是DD/MM/YYYY而不是MM/DD/YYYY,我无法让整个公司更改其区域设置,这并不能解决问题,当日期以DD/MM/YYYY格式输入时,因为德国CDate不会在03年31月抛出错误/2018@Patrick.H它不会抛出错误,但会将日期格式化为2018年3月31日,我认为这是您想要的?问题在于excel会将其上载到数据库中,因此值确实需要这样,而不仅仅是格式,对不起,如果我是unclear@Patrick.H我已经更新了我的答案,它现在应该可以为您工作了,因为代码不仅会以文本格式,而且会以MM/DD/YYYY US格式写入日期,这样您就可以以指定的格式上传到数据库中。