我的用户表单有日期和时间戳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但这也转换为美国格式。
任何帮助都将不胜感激。
答案 0 :(得分:1)
我怀疑此前已经多次回答,但您需要使用CDate
:
Cells(emptyRow, 14).Value = CDate(datetextbox.Value)
这会使用您的区域设置将日期字符串转换为真实日期值。