Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

on error resume next

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

on error resume next

Postdi miko » 13/05/10 17:34

salve a tutti,
ho un problema con una macro, che in fase di realizzazione funzionava ma ora mettendola in esecuzione mi blocca excel.
inserendo in excel un centinanio di valori ed eseguendo la macro con il tasto f8 nell'editor vba, tutto funziona perfettamente.
se però inserisco moltissimi valori ed eseguo la macro, tramite pulsante, l'esecuzione procede regolarmente, ed ottengo risultati esatti, fino ad un certo numero di righe,
poi excel si blocca, compare un msgbox che dice:
"ERRORE RI RUN-TIME '-2147417848(80010108)'
METODO '_DEFAULT' DELL'OGGETTO 'RANGE' NON RIUSCITO
l'help (?) del msgbox mi apre una finestra nella quale si descrive questo errore:
"ERRORE DI AUTOMAZIONE (ERRORE 400)"
e si fa riferimento a: ON ERROR RESUME NEXT
il debug del msgbox evidenzia in giallo sempre la stessa riga di codice, che fino al momento del blocco ha funzionato perfettamente per le righe precedenti.
Cells(r1, 24) = Application.WorksheetFunction.Sum(Range("M" & r1 & ":V" & r1))
la linea di codice incriminata esegue una normale somma di numeri, per righe.
se continuo ad eseguire il codice col tasto f8 tutto procede regolarmente, e se poi clicco nell'editor il triangolino verde-esegui, l'esecuzione riprende normalmente.
mi pare di capire che in effetti non c'è un errore specifico, tipo sintassi che blocca l'esecuzione della macro.
se il problema è la mancaza di ON ERROR RESUME NEXT nel mio codice, in che punto devo inserirlo?
ho trovato in rete anche
ERR.CLEAR
ON ERROR GOTO 0
è necessario inserire anche queste linee?
vi mostro il codice, nel quale ho evidenziato la linea sulla quale si blocca excel
Codice: Seleziona tutto
Sub CALCOLA()
Sheets("Foglio1").Select
URBini = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
Sheets("Foglio1").Range("B3:K" & URBini).ClearContents
Call IMPORTA_
Application.ScreenUpdating = False
Application.Calculation = xlCalculationAutomatic 'xlManual
Application.Cursor = xlWait
Call IMPORTA1
URB = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
StartArrB = Range("B3:K" & URB)
Call OPENFILE
URM = Sheets("Foglio1").Range("M" & Rows.Count).End(xlUp).Row
  StartArrM = Range("M3:V" & URM)
For r = 3 To URB
-----------------
--------
For r1 = 3 To URM
  Cells(r1, 24) = Application.WorksheetFunction.Sum(Range("M" & r1 & ":V" & r1))  '<<<<<<<<<
Next r1
------------
------------
Sheets("Foglio1").Select
   Range("B3:K" & URB) = StartArrB
Next r
-------
-------
Next I
Range("A3").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Cursor = xlDefault
End Sub

ciao grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: on error resume next

Postdi Anthony47 » 13/05/10 22:45

Mah, non vedo perche' ricorrere a On Error Resume Next, che avrebbe l' effetto di mascherare un potenziale problema continuando la macro anche in caso di errore.

Il mio primo suggerimento e' di rendere esplicito workbook e worksheet su cui si deve lavorare; quindi modificare "Application.WorksheetFunction.Sum(Range(etc etc" in "Application.WorksheetFunction.Sum(ThisWorkbook.Worksheets("NomeFoglio").Range(etc etc"; ricorda che ThisWorkbook fa riferimento al file che contiene la macro, quindi potrebbe essere necessario usare "Workbooks("NomeFile")"; evitare l' uso di Activeworkbook e di Activesheet, perche' l' ipotesi che sto' facendo e' che in qualche circostanza non vi sia un foglio "attivo".

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: on error resume next

Postdi miko » 14/05/10 10:59

ciao,
mi sembra di capire dalle tue indicazioni che devo specificare i fogli e le cartelle su cui devono operare le macro in modo che non si crei una confusione.
come dicevo nel primo topic
...se continuo ad eseguire il codice col tasto f8 tutto procede regolarmente, e se poi clicco nell'editor il triangolino verde-esegui, l'esecuzione riprende normalmente....

ma ho notato che si annulla lo screenupdating = false, e si vedono tutte le operazioni eseguite dalla macro;
non ho però effettuato le modifiche che hai suggerito:
ciao grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: on error resume next

Postdi Anthony47 » 14/05/10 19:08

mi sembra di capire dalle tue indicazioni che devo specificare i fogli e le cartelle su cui devono operare le macro in modo che non si crei una confusione.
Si, quello e' il mio primo suggerimento, da applicare sulla riga che va in errore. Serve a gestire eventuali perdite di focus dai fogli su cui operare.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "on error resume next":


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite