运行时错误13:类型不匹配

时间:2013-12-04 18:56:48

标签: excel vba

我在下面的宏上遇到“运行时错误13:类型不匹配”(突出显示调试行)。我的目标是检查第1行是否有任何大于1的数量,以警告用户时钟正在为某个活动运行,然后退出该宏。第1行中的数字表示用户已启动活动时钟,但时钟一次只能运行一个活动。我尝试在第1行使用“ON”... Dim StartOnRow as Text ...但是我得到了同样的错误。非常感谢任何帮助!

Sub StartRunningTimer()
        Dim StartOnRow As Integer
        **StartOnRow = Range("a1:bj1")**
        If StartOnRow > 1 Then
        MsgBox ("Please stop the previously started activity")
        If StartOnRow = True Then Exit Sub
        End If
    Worksheets("TimeElapsed").Activate
    nr = ThisWorkbook.Sheets("TimeElapsed").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(nr, 1) = Format(Now(), "m.d.yy h:mm:ss")
        If Not Started Then
        myTime = Time
        Started = True
    Else
        Worksheets("TimeElapsed").Cells(1, 1).Value = "ON"
        Worksheets("Dashboard").Cells(64, 2).Value = "PRESS IS RUNNING"
        Worksheets("Dashboard").Cells(65, 2).Value = "Time Started:  " & Format(Now(), "hh:MM:ss")
        Worksheets("Dashboard").Cells(74, 2).Value = ""
        Worksheets("Dashboard").Cells(75, 2).Value = ""
        Worksheets("Dashboard").Activate
    End If
End Sub

2 个答案:

答案 0 :(得分:0)

我认为您需要Set声明:

Set StartOnRow = Range("a1:bj1")

此外,Range返回Range对象,而不是整数:

Dim StartOnRow AS Range
Set StartOnRow = Range("a1:bj1")

答案 1 :(得分:0)

如果您在任何一个单元格中查找任何大于1的内容,只需在BK1中使用一个对整行进行求和的辅助单元格。检查该单元格StartOnRow = Range("BK1").Value

关于你的问题,@ roryap是正确的。当像这样使用Range时,你得到的是一个对象,需要set,但仍然无法获得你想要的东西,因为你需要循环遍历范围然后找到一个值> 1。

Dim StartOnRow as Range
Dim cellCheck as Range

Set StartOnRow = Range("A1:BJ1")

For Each cellCheck in StartOnRow
     if cellCheck.value > 1 Then
          'Stop
          'Exit Sub
     End if
Next cellCheck