【问题标题】:VBA Convert Datetime to Hour in a ColumnVBA将日期时间转换为列中的小时
【发布时间】:2017-07-31 14:07:16
【问题描述】:

我想将一列中的日期时间值转换为小时值。现在我用循环尝试了它,但我收到错误说类型不兼容。有什么想法吗?

Dim l As Range
For Each l In Hour.Range("A1", "A" & lngLastRow)
If l.Value <> "" Then l.Value = Hour(l.Value)
Next

【问题讨论】:

  • 没有看到数据,我猜你的单元格中有字符串而不是日期。
  • 这实际上可能是问题所在,是否可以在小时函数中使用 CDate ?
  • 但是当我手动操作时,它实际上与 Hour(A2) 一起工作,我的意思是在 VBA 代码之外,所以我想我确实有正确的格式。
  • 我会使用Hour(CDbl(l.value)) 公式是否一直有效?它是否在任何一个单元格中返回错误?当代码出错时,l.Value 的值是多少?
  • 是的,它可以手动运行。 Hour(CDbl(l.value)) 不起作用,仍然相同的错误,单元格中的数据如下所示:12.07.2017 21:14:51

标签: vba excel datetime type-conversion


【解决方案1】:

在世界上所有可能的名字中,你真的把你的工作表命名为 Hour 还是我错了?

如果是这种情况,只需重命名工作表,它会自动修复所有问题,因此您会很高兴。并且永远不要对任何变量或对象使用像 MinuteHourSecondInteger 这样的名称。

这是一个可能的解决方案:

Option Explicit

Public Sub Testing()

    Dim l               As Range
    Dim lngLastrow      As Long: lngLastrow = 6

    For Each l In ActiveSheet.Range("A1", "A" & lngLastrow)
        If l <> "" Then
            l.Offset(0, 1) = Format(l, "HH")
        End If
    Next

End Sub

确保在此处更改名称,而不是在选项卡上:

【讨论】:

    猜你喜欢
    • 2019-12-27
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2019-11-26
    • 2017-05-17
    • 2021-09-13
    • 2022-06-21
    • 2019-11-07
    相关资源
    最近更新 更多