2017-09-11 77 views
0

我已经创建了一个用户窗体,它查看几个输入日期的单元格。奇怪的是,当它将日期格式化为英国格式时,它是非常有气质的。当我最初编写代码时,它会将英文格式的日期格式化,然后再次格式化,然而今天2017年9月11日它已转向美国格式,而不是读取11/09/2017它读取09/11/2017如何在excel vba中将日期格式设置为英国日期

日期通过文本框输入并编码如下。有人可以发布任何建议以防止未来发生这种情况吗?另外,语言和键盘设置都是英国英语

ws.Cells(mRow, 2).Value = Format(Date, "DD/MM/YYYY") 
ws.Cells(mRow, 12).Value = Format(Me.TxtRcD.Value, "DD/MM/YYYY") 
ws.Cells(mRow, 18).Value = Format(Me.TxtDD.Value, "DD/MM/YYYY") 

在所有的这些例子中,至今一直在文本框中输入为2017年11月9日

+1

只是一个评论:我发现这些差异总是令人困惑,并且从来没有设法让它们正确(过了一段时间没人知道哪一个是正确的)。因此,我们决定在所有地方使用[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)日期格式'YYYY-MM-DD' **。因为它是唯一不能被人类误解的东西。我们只是将Windows属性切换为该格式(通过每台PC上的组策略)。也许这是值得你思考的。 –

+0

@Peh是的谢谢你,完美的作品。非常感谢这些信息。非常有意义 – MBrann

回答

0

确保您正在阅读的细胞作为正确的数据格式 - 这可能会导致格式化时出现问题。如果它是字符串,则将其转换为数字或日期。 如果你正在读它的数量,NumberFormat的可能是有用的:

selection.NumberFormat = "dd/mm/yyyy" 

此外,要注意大写和小写:DD是不一样的DD。不要把它放在我头上,但是例如如果你需要3个月的第一个字母(如FEB,JUN等),你需要'MMM'而不是'mmm'