Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA用户表单日期/时间戳-复制到单元格时,英国日期更改为美国格式_Vba_Excel_Date_Datetime - Fatal编程技术网

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

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(

我有一个带有日期和时间戳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
当日期进入电子表格单元格时,它会更改为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)