VBA用户表单日期/时间戳-复制到单元格时,英国日期更改为美国格式
我有一个带有日期和时间戳dd/mm/yyyy hh:mm:ss的用户表单 它以英国格式显示在文本框中,我使用以下代码生成它:VBA用户表单日期/时间戳-复制到单元格时,英国日期更改为美国格式,vba,excel,date,datetime,Vba,Excel,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(
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
当日期进入电子表格单元格时,它会更改为MM/DD/YYYY。我在VBA和下拉菜单中尝试了数字格式,并使用了自定义设置,并检查了两台不同机器上的区域设置是否正确。这是我创建的文件的一个组成部分,该文件将使用以下公式识别同一参考号的最新记录,然后将数据传输到清理表:
=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格式,但它也转换为US格式
任何帮助都将不胜感激。我怀疑在这里之前已经回答过很多次了,但您需要使用
CDate
:
Cells(emptyRow, 14).Value = CDate(datetextbox.Value)
这将使用您的区域设置将日期字符串转换为真实的日期值。感谢您的发布,它工作得非常好!我发现在不了解CDate的情况下发布的所有其他内容都以错误的方式进行,它们侧重于以某种方式填充文本框或使用vba格式化单元格。是否有方法告诉
CDate
(或任何其他函数)如何解释字符串?它使用区域设置(我想)在这种情况下是有效的,但是如果我想读取美式日期字符串呢?如果你想使用美式格式,你根本不需要CDate
。VBA将默认为美国格式。好的,但是如果美国人想要读取“DD/MM/YYYY”日期怎么办?我认为应该有类似于CDate(string,format)
的东西,但显然没有。@arcadeprecinct我们这里有点离题了,但为什么他们会在userform中看到英国格式的日期呢?您可以使用Format
以指定的任何格式返回格式化字符串。请注意,您还可以使用Timestamp=Format(现在是“DD/MM/YYYY hh:MM:ss”)
。如果您的区域格式使用的不是/
作为分隔符,则需要使用额外的“\”:“DD\/MM\/YYYY”
。时间戳应该是Dim
标记为String
,这样就不会以Date
类型结束,
Cells(emptyRow, 14).Value = CDate(datetextbox.Value)