Vba 格式正确的日期(例如2017年3月1日00:00:00)
每次我尝试将日期更改为特定格式时,excel会自动将格式更改为“2017年3月1日0:00”,而不是2017年3月1日00:00:00 我的代码如下:Vba 格式正确的日期(例如2017年3月1日00:00:00),vba,excel,Vba,Excel,每次我尝试将日期更改为特定格式时,excel会自动将格式更改为“2017年3月1日0:00”,而不是2017年3月1日00:00:00 我的代码如下: objMasterDefectLog.Sheets(1).Range(strFrozenCustReqDateLoc).Offset(iCounter, 0).Value = Format(tempString, "dd-mmm-yyyy hh:mm:ss") 即使我将tempString转换为日期,它的格式仍然不正确。如果不需要,我宁愿不解析
objMasterDefectLog.Sheets(1).Range(strFrozenCustReqDateLoc).Offset(iCounter, 0).Value = Format(tempString, "dd-mmm-yyyy hh:mm:ss")
即使我将tempString转换为日期,它的格式仍然不正确。如果不需要,我宁愿不解析所有内容。设置值后,还需要定义单元格的格式。设置
.Value
仅设置单元格的值,而不设置格式。因此,您还需要格式化单元格:
objMasterDefectLog.Sheets(1).Range(strFrozenCustReqDateLoc).Offset(iCounter, 0).NumberFormat = "dd-mmm-yyyy hh:mm:ss"
另请参见:设置值后,还需要定义单元格的格式。设置
.Value
仅设置单元格的值,而不设置格式。因此,您还需要格式化单元格:
objMasterDefectLog.Sheets(1).Range(strFrozenCustReqDateLoc).Offset(iCounter, 0).NumberFormat = "dd-mmm-yyyy hh:mm:ss"
另请参见:是否希望单元格包含日期/时间,或显示日期/时间的文本?如果是前者,请使用@Peh的示例。如果是后者,您可以使用旧的撇号技巧强制:
...Offset(iCounter, 0).Value = "'" & Ucase(Format(tempString, "dd-mmm-yyyy hh:mm:ss"))
是否希望单元格包含日期/时间,或显示日期/时间的文本?如果是前者,请使用@Peh的示例。如果是后者,您可以使用旧的撇号技巧强制:
...Offset(iCounter, 0).Value = "'" & Ucase(Format(tempString, "dd-mmm-yyyy hh:mm:ss"))
将日期格式化为文本而不是使用日期的好处在哪里?我只看到缺点,完全同意你的看法。但我们看不到代码的其余部分。谁知道那间牢房以后用来干什么!只是提供一个备选方案以备不时之需。好的,我只是认为您有一些特定的想法。对不起,这可以存储为字符串,但我不希望文本中包含“%”。同样,下面的代码也可以工作,但我需要MAR为大写。UCase不能很好地处理日期。@Peh,我想诺兰已经找到了一个我们都没有预见到的好处。上部外壳。我想不出仅仅是格式化怎么做。将日期格式化为文本而不是使用日期的好处在哪里?我只看到缺点,完全同意你的看法。但我们看不到代码的其余部分。谁知道那间牢房以后用来干什么!只是提供一个备选方案以备不时之需。好的,我只是认为您有一些特定的想法。对不起,这可以存储为字符串,但我不希望文本中包含“%”。同样,下面的代码也可以工作,但我需要MAR为大写。UCase不能很好地处理日期。@Peh,我想诺兰已经找到了一个我们都没有预见到的好处。上部外壳。我想不出你怎么能在格式上做到这一点。有没有办法让我的月份全部大写?这样我看不到任何机会,因为格式取决于你使用的本地化。因此,您需要将日期转换为文本,并将其转换为大写(请参见answer@CLR)。但请注意,您不能将日期转换为文本进行计算!谢谢你抽出时间。我决定只使用“'”答案。我不喜欢这个解决方案,但看起来我只是有点受限于得到我想要的东西。谢谢。是否有办法让我的月份全部大写?这样我看不到任何机会,因为格式取决于您使用的本地化。因此,您需要将日期转换为文本,并将其转换为大写(请参见answer@CLR)。但请注意,您不能将日期转换为文本进行计算!谢谢你抽出时间。我决定只使用“'”答案。我不喜欢这个解决方案,但看起来我只是有点受限于得到我想要的东西。非常感谢。