VBA用户形态日期/时间戳 - 英国日期在复制到单元格时更改为美国格式

时间:2016-07-05 08:49:30

标签: excel vba excel-vba date datetime

我的用户表单有日期和时间戳dd / mm / yyyy hh:mm:ss。

它在文本框中以英国格式显示,我使用此代码生成它:

Dim iNow
Dim d(1 To 6)
Dim i As Integer


iNow = Now
d(3) = Year(iNow)
d(2) = Month(iNow) & "/"
d(1) = Day(iNow) & "/"
d(4) = Hour(iNow) & ":"
d(5) = Minute(iNow) & ":"
d(6) = Second(iNow)

For i = 1 To 6
  If d(i) < 10 Then Timestamp = Timestamp & "0"
  Timestamp = Timestamp & d(i)
  If i = 3 Then Timestamp = Timestamp & " "

Next i
datetextbox.Value = Timestamp

当以下代码块使用以下代码将此信息传输到Excel数据库表时,会出现此问题:

'Determine emptyRow in Database Sheet
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Cells(emptyRow, 14).Value = datetextbox.Value

当MM / DD / YYYY进入电子表格单元格时,日期会发生变化。我在VBA中尝试了数字格式,也在下拉菜单中使用了自定义设置,并检查了区域设置是两台不同的机器上的UK。这是我创建的文档的一个组成部分,它将使用此公式识别相同参考编号的最新记录,然后将数据传输到清理表:

=MAX(IF(Database!$P$2:$P$1437=P488,IF(Database!$P$2:$P$1437=P488,Database!$N$2:$N$1437,"")))

我确实试过一个简单的Now()来说明格式为dd / mm / yyyy / hh:mm:ss但这也转换为美国格式。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我怀疑此前已经多次回答,但您需要使用CDate

Cells(emptyRow, 14).Value = CDate(datetextbox.Value)

这会使用您的区域设置将日期字符串转换为真实日期值。