Сон в VBA (целочисленное переполнение!!)

В VBA вы можете

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

обеспечить себе режим сна.

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

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


person mcoolbeth    schedule 28.05.2010    source источник
comment
Считается ли вызов Sleep в цикле объединением нескольких последовательных вызовов?   -  person Jay    schedule 28.05.2010


Ответы (1)


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

Пример:

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

Пример 2:

dim t as long
t = 10000! * 10000 / 10000 'Ok
person GSerg    schedule 28.05.2010
comment
Ты прав. Проблема заключалась только в том, что я не смог указать, что мой аргумент был Long с достаточной ясностью. - person mcoolbeth; 28.05.2010