non va .... il codice è questo
...
MSComm1.Output = stringaOutput 'invio la richiesta
Delay (1000) 'attendo
ricevi = MSComm1.Input 'prelevo la risposta dalla periferica
If ricevi = "" Then validato = False: GoTo Esci 'se la periferica non risponde esco ed imposto un flag
....
quando eseguo questo codice con la sleep al posto della delay va nello stato non risponde ma la comunicazione avviene correttamente, se metto la delay invece è come se non venisse generato alcun ritardo anche se alzo il numero di millisecondi... la delay l'ho definita esattamente come suggerito da oregon:

Public Sub Delay(ByVal ms As Long)
While ms > 0
Sleep 50
DoEvents
ms = ms - 50
Wend
End Sub

PS ho anche provato ad usare la call per richiamare la delay il risultato non cambia