2015-07-29 2 views
1

Я продолжаю получать ошибку несоответствия типа с помощью следующего кода, и я не могу понять, почему. Когда отладчик дает мне эту ошибку, и я нажимаю кнопку «Продолжить», она движется вперед, как следует. Так кажется, что код работает. Так зачем же в первую очередь выбрасывать эту ошибку ?!Почему я получаю ошибку несоответствия типа VBA?

Sub Record() 

    ' ... 
    Application.OnTime Now + TimeValue("00:00:" & (60 - Second(Now))), "Record" 
    ' ... 

End Sub 

EDIT:

Fixed двоеточие, но проблема все еще остается. Проблема была в том, что «00:00:60» не является допустимым числом, так как у вас не может быть 60 секунд. Это должно было быть «00:01:00».

+1

То длинное выражение. Разбейте его на несколько строк с помощью одной операции на линию и посмотрите, какая часть сломана. Также вы можете использовать свои типы, т. Е. Использовать 'CStr (60 - Second (Now))' –

ответ

4

Вы пропустите двоеточие после 00:00:

Application.OnTime Now + TimeValue("00:00:" & (60 - Second(Now))), "Record" 

Это не вызывает «несоответствие типов» ошибки, но это делает ваша функция работает неожиданным образом.


Ошибка, о которой вы говорите, появляется, когда Second(Now) = 0.

В таком случае выражение TimeValue("00:00:" & (60 - Second(Now))) возвращает «00:00:60», и это неправильный формат времени.

Вот работы вокруг этого вопроса:

Application.OnTime Now + TimeSerial(0, 0, 60 - Second(Now)), "Record" 
Смежные вопросы