我在下面的宏上遇到“运行时错误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
答案 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