Excel VBA - 使用6AM更新Datetime格式化单元格中的时间

时间:2013-10-10 07:00:03

标签: excel vba datetime

我在使用VBA修改日期和时间的单元格中特定时间的时间时遇到了问题。

单元格被格式化为“d / mm / yyyy h:mm AM / PM”,我正在使用仅时间的单元格格式化为“h:mm AM / PM”并且试图使用这段代码来更新时间部分(t1用于子部分的其余部分..)

Public t1 As String

t1 = Range("H1").Value
Range("D3").Select
ActiveCell = DateValue(ActiveCell) & " " & TimeValue(t1)

这似乎可以开启和关闭。例如,6AM将时间更新为12:25,而上午10点完全无法工作。我想我只是做错了但我已经搜索过这个问题,看起来这不是一个常见问题。有没有人有更好的想法?!这让我疯狂

单元格H1中的值确实发生了变化,因此我需要以某种方式从中提取值。

2 个答案:

答案 0 :(得分:0)

也许是这样的:

Sub Macro1()
t1 = Range("H1").Value
Range("D3").Select
ActiveCell.Value = ActiveCell + t1
End Sub

答案 1 :(得分:0)

你提到了格式化格式;请注意,当您仅检索值时,单元格格式无关紧要:dt = ActiveCell

另请注意,可以在文本=istext(H1)返回true时存储日期。在这种情况下,更改格式不会有任何区别。或者您可以按常规方式将其存储为值。 =isNumber(H1)返回true。使用DateValue("H1")

时,这两种方式都没有任何区别

我建议将dt和tm声明为日期,这样如果作业dt = Range("H1").Value成功,你就知道你确实有一个约会。然后在添加dateValue + timeValue时不会出现不匹配错误。

试试这个

Dim dt As Date
Dim tm as Date
dt = Range("H1").Value
tm = ActiveCell.value
Range("D3").value = DateValue(dt) + TimeValue(tm) 'returns a date/time as a value