VBA用户表单date/时间戳记 – 复制到单元格时,英国date更改为美国格式

我有一个用户窗体的date和时间戳记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 

进入电子表格单元格的date会变为MM / DD / YYYY。 我已经尝试过VBA格式的数字格式,并且在下拉菜单中使用了自定义设置,并在两台独立的机器上检查了区域设置是UK。 这是我创build的一个文档的一个组成部分,它将使用这个公式识别相同参考编号的最新logging,然后将数据传输到清洗表:

 =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,但是这也转换为美国格式。

任何帮助,将不胜感激。

我怀疑这已经被回答了很多次,但是您需要使用CDate

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

这将使用您的区域设置将datestring转换为真实的date值。