Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA将列中的日期时间转换为小时_Vba_Excel_Datetime_Type Conversion - Fatal编程技术网

VBA将列中的日期时间转换为小时

VBA将列中的日期时间转换为小时,vba,excel,datetime,type-conversion,Vba,Excel,Datetime,Type Conversion,我想将一列中的日期时间值转换为小时值。现在我尝试了一个循环,但我得到的错误是类型不兼容。有什么想法吗 Dim l As Range For Each l In Hour.Range("A1", "A" & lngLastRow) If l.Value <> "" Then l.Value = Hour(l.Value) Next Dim l作为范围 对于小时范围内的每个l(“A1”、“A”和lngLastRow) 如果l.值为“”,则l.值=小时(l.值) 下一个 在世界上

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

Dim l As Range
For Each l In Hour.Range("A1", "A" & lngLastRow)
If l.Value <> "" Then l.Value = Hour(l.Value)
Next
Dim l作为范围
对于小时范围内的每个l(“A1”、“A”和lngLastRow)
如果l.值为“”,则l.值=小时(l.值)
下一个

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

如果是这种情况,只需重命名工作表,它会自动修复所有问题,因此您会很高兴。不要对任何变量或对象使用
分钟
小时
整数
等名称

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

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
选项显式
公共子测试()
变暗l为范围
变暗lngLastrow的长度:lngLastrow=6
对于ActiveSheet.Range(“A1”、“A”和lngLastrow)中的每个l
如果我是“那么”
l、 偏移量(0,1)=格式(l,“HH”)
如果结束
下一个
端接头
请确保更改此处的名称,而不是选项卡上的名称:


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