Non credo che "far respirare" il pc per qualche secondo velocizzi le macro, quindi penso che questo esercizio sia inutile.
Comunque, immaginiamo che la tua macro abbia un loop; dobbiamo inserire nel loop un "ritardo temporizzato".
Ad esempio:
1) Per cominciare inserisci questa Subroutine in un Modulo standard del vba:
- Codice: Seleziona tutto
Sub myWait(myStab As Single)
Dim myStTiM As Single
'Wait loop
myStTiM = Timer
Do 'wait myStab
DoEvents: DoEvents: DoEvents
If Timer > (myStTiM + myStab) Or Timer < myStTiM Then Exit Do
Loop
End Sub
Questa sara' la Sub che inserisce il ritardo; non ho voluto usare Application.Wait, che e' un "congelamento" del pc quindi tempo sottratto a qualsiasi elaborazione, per evitare che la cosa oltre che inutile fosse pure dannosa.
2) Andiamo nella Sub su cui intervenire
-inserisci queste variabili tra le tue dichiarazioni, in testa alla sub
Dim myTim As Single, Ogni As Single, Attendi As Single
-Prima dell'inizio del loop dichiariamo i parametri del processo: Periodo tra una attesa e la successiva, durata dell'attesa.
-Subito dopo l'inizio del loop inseriamo le istruzioni che richiamano l'attesa
In codice:
- Codice: Seleziona tutto
Ogni = 300 '<<< Ogni quanti secondi va inserito il ritardo
Attendi = 5 '<<< La durata del ritardo
myTim = Timer
For I = 2 To LastR 'ipotizziamo che questo sia l'inizio del tuo loop
'Aggiungere >>
If (Timer - myTim) > Ogni Then
myWait Attendi
myTim = Timer
'' Debug.Print Timer
End If
'<< termine delle aggiunte
'il tuo codice
'il tuo codice
Con questi parametri, ogni 300 sec verra' inserito un ritardo di 5 secondi; modifica i parametri (le istruzioni marcate <<<) a piacimento
Ciao