VBA-十进制到时间-错误值
我是这个社区的新手,所以如果我犯了任何新手错误,请在这篇文章中批评你想要的一切 我目前正忙于一项任务。我对VisualBasic有些陌生,但到目前为止,我的理解相当不错。然而,我似乎无法得到一个基本的操作排序。我已经在互联网上搜索了一两天,头撞在墙上。希望你能帮我解决这个问题 我正在从Oracle数据库导入不同订单的周期时间。它们作为十进制值(小时数)返回到列中,但我希望它们显示为“longtime”(“hh:mm:ss”)。我所读到的,它应该是一样容易除以24和改变格式。但是,这在使用单元格值时给出了错误的值 例如:VBA-十进制到时间-错误值,vba,time,decimal,Vba,Time,Decimal,我是这个社区的新手,所以如果我犯了任何新手错误,请在这篇文章中批评你想要的一切 我目前正忙于一项任务。我对VisualBasic有些陌生,但到目前为止,我的理解相当不错。然而,我似乎无法得到一个基本的操作排序。我已经在互联网上搜索了一两天,头撞在墙上。希望你能帮我解决这个问题 我正在从Oracle数据库导入不同订单的周期时间。它们作为十进制值(小时数)返回到列中,但我希望它们显示为“longtime”(“hh:mm:ss”)。我所读到的,它应该是一样容易除以24和改变格式。但是,这在使用单元格值
? ws.Cells(i,6) 'Cycle times are placed in column 6 while looping over rows i.
0.050000
? Format(0.050000/24, "hh:mm:ss")
00:03:00
但是
这显然是不正确的。0.05小时相当于3分钟。我还观察到日期值的变化:
? Format(0.05/24, "yyyy-mm-dd hh:mm:ss")
1899-12-30 00:03:00
? Format(ws.Cells(i,6)/24, "yyyy-mm-dd hh:mm:ss")
1905-09-13 08:00:00
这怎么可能ws.Cells(i,6)
返回0.05。尽管有这种格式(ws.Cells(i,6)/24,“hh:mm:ss”)
≠<代码>格式(0.05/24,“hh:mm:ss”)
我试过乱用数字格式(字符串、日期等),.Value
和.Value2
有人知道发生了什么,为什么会这样吗
提前感谢您的时间。问题似乎源于您的计算机认为
0.050000
实际上不是数字0.05
,而是一个被解释为50000
的字符串
因此,当您将50000除以12时,您将得到1905-09-13 08:00:00
的日期/时间,当使用格式时,该日期/时间将显示为08:00:00
我认为您需要检查日期/时间和语言设置,以确保它们设置正确。?格式(ws.Cells(i,6)/24,“hh:mm:ss”)
给我提供00:03:00
尝试在新工作簿中手动键入,看看是否得到相同的结果?执行时,i
的值是否相同?ws.Cells(i,6)
当您执行时?格式(ws.Cells(i,6)/24,“hh:mm:ss”)
?同样有趣的是,它显示了0.050000
而不是0.05
作为的答案?ws.Cells(i,6)
。同样有趣的是,1905-09-13 08:00:00
*24给出50000。您使用的Excel语言版本是什么?你用的是什么语言环境?您是使用
作为小数点,还是使用
作为千位分隔符?@SiddharthRout如果使用
作为小数点,您将得到00:03:00
,但是,如果您的区域设置将其用作千位分隔符,它会认为您正在执行50000/24
,它给出的日期/时间为1905-09-13 08:00:00
。正确。事实确实如此。我的解决方案是用,
替换单元格中的
。除非我遇到更多这样的情况,否则我不想弄乱默认设置。非常感谢。
? Format(0.05/24, "yyyy-mm-dd hh:mm:ss")
1899-12-30 00:03:00
? Format(ws.Cells(i,6)/24, "yyyy-mm-dd hh:mm:ss")
1905-09-13 08:00:00