Avatar billede caschmidt Nybegynder
24. september 2003 - 15:01 Der er 10 kommentarer og
2 løsninger

ErrorHandler virker ikke i Do Loop løkke

Jeg har en Do .. Loop løkke, som gennemløber alle regneark i mit Excel-projekt.
I hvert regneark nulstiller vba samtlige tal (kun tal - ikke formler og ikke tekst)
Dette gør jeg med:     
Selection.SpecialCells(xlCellTypeConstants, 21).Select: Selection.Value = 0

... men i nogle ark er der slet ingen konstanter, kun formler og tekst.  Derfor har jeg tilføjet "On Error GoTo Fortset" før ovennævnte kode (og naturligvis "Fortset:" efter denne del af koden)

Første gang vba finder et regneark uden konstanter virker ErrorHandleren fint, og koden "spiller videre" fra "Fortset:" linien.
Men anden gang det sker får jeg fejlmeldingen "Run-time error '1004':  Der blev ikke fundet nogen celler"
(Nej jeg ved sq godt, der ikke er nogen celler, men det var vel det ErrorHandleren skulle tage sig af - eller hva' ?)

Kan I knække den ?
Avatar billede tuctoh Nybegynder
24. september 2003 - 15:11 #1
jeg vil tro du skal sætte din error til 0 bagefter, med

err.clear

Source: http://www.asp-help.com/getstarted/ms/vbscript/223.asp
Avatar billede venne Nybegynder
24. september 2003 - 15:18 #2
Har du en Resume i din error handler? Hvis ikke fejlhåndteringen afsluttes med en Resume er handleren stadig aktiv, og så kan den ikke håndtere flere fejl.
Avatar billede caschmidt Nybegynder
24. september 2003 - 15:45 #3
Til tuctoh:
Jeg forsøgt både med "err.clear" og med "On Error GoTo 0", men lige lidt hjælper det.  Første gang løkken støder på en "Run-time error" glider den fint videre til ErrorHandler-linien, men næste gang er det som om hele ErrorHandleren er sat ud af spillet og jeg får fejlmeldingen.

Til venne:
Hvordan skal jeg bruge "Resume", når jeg jo netop ikke ønsker at gå tilbage til kodelinien umiddelbart efter fejlens opståen ?
Avatar billede caschmidt Nybegynder
24. september 2003 - 15:47 #4
... men jeg prøvede naturligvis at sætte en Resume ind umiddelbart efter ErrorHandler-linien.
Så stopper makroen bare dér ;-(
Avatar billede martin_moth Mester
24. september 2003 - 15:48 #5
On Error Resume Next
Avatar billede tuctoh Nybegynder
24. september 2003 - 15:52 #6
casch, det er i din error handling at du skal sætte err.clear ind
Avatar billede caschmidt Nybegynder
24. september 2003 - 16:04 #7
I er dæl'mæ hurtige med svar =:-D
Jeg havde i første omgang placeret det jeg kaldte "ErrorHandler-linierne" (dvs.:  "Fejlbehandling: + diverse kodelinier") som en forlængelse af kodelinierne i bunden af min Do-Loop løkke.
Jeg har nu flyttet disse linier ned i bunden af hele proceduren, og umiddelbart forinden indsat "Exit Sub".  Derefter har jeg tilføjet en "Resume TilbageIgen" som peger på den kodelinie, der skal fortsættes fra.
Det virker nu fint :-)

... men jeg blev ikke klog på, om "err.clear" ville kunne gøre det bedre/fiksere ?
Avatar billede tuctoh Nybegynder
24. september 2003 - 16:08 #8
jamen smid err.clear i slutningen af den sub som tager sig af error handlingen, og se hvad du synes virker bedst
Avatar billede martin_moth Mester
24. september 2003 - 16:17 #9
Det er næsten venne der skal have flest points - var det ikke "Resume" der hjalp dig på vej?
Avatar billede caschmidt Nybegynder
24. september 2003 - 16:22 #10
Jo - bare synd, at "venne" ikke har svaret - kun kommenteret. Det giver mig ikke mulighed for at tildele "venne" pointene.
Avatar billede tuctoh Nybegynder
24. september 2003 - 16:24 #11
bare giv venne lidt tid til at svare, så han kan få points
Avatar billede venne Nybegynder
25. september 2003 - 08:20 #12
Ja, jeg har (heldigvis?) ikke mulighed for at sidde ved skærmen hele tiden...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester