2010-05-28 7 views
0

В VBA вы можетеСпящих в VBA (переполнение целочисленного !!)

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

, чтобы обеспечить себя рутину сна.

Однако Long, который должен быть передан подпрограмме, переполняется для значений, превышающих 32000 миллисекунд.

Есть ли способ спать в течение более длительных периодов времени без сложностей наложения нескольких последовательных вызовов в режим сна?

+0

ли вызов 'Sleep' в счетчике цикла, как "нанизываниями несколько последовательных вызовов"? – Jay

ответ

2

Нет, он не переполняется, если только ваш код, который вычисляет необходимое количество миллисекунд, вызывает переполнение.

Пример:

dim t as long 
t = 10000 * 10000/10000 'Overflow 

Пример 2:

dim t as long 
t = 10000! * 10000/10000 'Ok 
+0

Вы правы. Проблема была в том, что я не смог указать, что мой аргумент был длинным с достаточной очевидностью. – mcoolbeth