时间识别子上的excel类型不匹配错误

时间:2016-06-16 11:00:59

标签: excel vba excel-vba time error-handling

我有一个sub应该识别小时,并在第二列中具有该小时的相应行中添加一个单元格的值。所以例如如果它的7:30和我按下按钮,它会在7:00的行中为单元格添加1。我的代码在昨天完美运行时给了我一个类型不匹配的错误。我的代码如下:

Private Sub CommandButton1_Click()
Sheets("Front End").Unprotect ("29745")
h = Hour(Now)
    For Each c In range("B8:B20")
        If h = Hour(c) Then
            c.Offset(0, 3) = c.Offset(0, 3) + 1
            Exit For
        End If
    Next c
Sheets("Front End").Protect ("29745")
Unload Me
End Sub 

我不知道我的生活中弄清楚代码出了什么问题,昨天我写这篇文章的时候整天都在工作。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

错误可能是由于Vba中的Hour()返回0-23表示24小时时间刻度的值这一事实引起的。由于您已经说过使用12小时的时间刻度,因此您应该使用Mod命令将时间添加到相应的小时。

此外,如果c.Offset(0,3)中的值不是数字,则使用+ 1命令会出现类型不匹配错误。避免该问题的最简单方法是将该行更改为c.Offset(0,3) = CInt(c.Offset(0,3)) + 1,这将首先将单元格中的值转换为整数,以确保不会抛出类型不匹配错误

答案 1 :(得分:1)

如果目标单元格c.Offset(0, 3)中有文字,则会导致"类型不匹配"尝试增加值时出错。检查您尝试更新的单元格是否包含任何文本,甚至是空格。