GetTickCount API function
May be you can use GetTickCount API function in your delay routine like below. So that you can have a flexible delay interval. I did used this in my Winsock data sending program & it work great. Hope it can help you too.
Code:
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private t1 As Long
Private t2 As Long
Private Sub DELAY(ByVal interval As Long)
t1 = GetTickCount
t2 = 0
Do While t2 - t1 < interval
DoEvents
t2 = GetTickCount
Loop
End Sub