2013-12-04 3 views
0

Я получаю «Ошибка времени выполнения 13: несоответствие типа» в следующем макросе (выделена строка отладки). Моя цель - проверить строку 1 для любого количества больше 1, чтобы предупредить пользователя о том, что часы работают для активности, а затем выйдите из макроса. Число в строке 1 означает, что пользователь запустил часы на активность, но часы могут работать только для одного действия за раз. Я попытался использовать «ON» в строке 1 ... Dim StartOnRow как текст ... но я получаю ту же ошибку. Большое спасибо за любую помощь!Ошибка времени выполнения 13: Неисправность типа

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

Я думаю, что вам нужно Set заявление:

Set StartOnRow = Range("a1:bj1") 

Кроме того, Range возвращает объект Range, не является целым числом:

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

Да , это была моя первая реакция, но это не соответствует остальной части кода OP. Я должен признать, что это действительно неясно. –

0

Если вы ищете просто ничего больше чем один в любой из этих ячеек, просто используйте вспомогательную ячейку в 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 
Смежные вопросы