Search code examples
vbainteger-overflowkernel32

Sleeping in VBA (Integer Overflow!!)


In VBA you can

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

to provide yourself with a sleep routine.

However, the Long that must be passed to the routine appears to overflow for values in excess of 32000 milliseconds.

Is there a way to sleep for longer periods of time without the complexity of stringing together several consecutive calls to the sleep routine?


Solution

  • No, it doesn't overflow, unless your code that calculates required number of milliseconds causes an overflow.

    Example:

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

    Example 2:

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