0

我无法使用 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)

这似乎可以打开和关闭.. 例如,上午 6 点会将时间更新为 12:25,而上午 10 点则完全不起作用。我想我只是做错了什么,但我已经上下搜索了这个,这似乎不是一个常见的问题..有没有人有更好的想法?!这让我发疯

单元格 H1 中的值确实发生了变化,所以我确实需要以一种或另一种方式从中提取值。

4

2 回答 2

0

也许是这样的:

Sub Macro1()
t1 = Range("H1").Value
Range("D3").Select
ActiveCell.Value = ActiveCell + t1
End Sub
于 2013-10-10T11:42:39.223 回答
0

您提到了单元格格式;请注意,当您仅检索值时,单元格格式并不重要,如下所示:dt = ActiveCell

另请注意,可以在文本=istext(H1)返回 true 时存储日期。在这种情况下,更改格式不会有任何区别。或者您可以以通常的方式将其存储为值。=isNumber(H1)返回真。使用时无论哪种方式都不会产生任何影响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
于 2013-10-10T12:00:02.420 回答