我有一个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
我不知道我的生活中弄清楚代码出了什么问题,昨天我写这篇文章的时候整天都在工作。
非常感谢任何帮助
答案 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)
中有文字,则会导致"类型不匹配"尝试增加值时出错。检查您尝试更新的单元格是否包含任何文本,甚至是空格。