I forbindelse med fejlhåndtering i min VBA kode, har hver procedure i projektet en fejlhåndteringsrutine, hvor jeg logger fejlen. Har godt nok linienr i min kode, så jeg kan skrive hvilken linie fejlen skete i, men jeg logger også hvilke procedure fejlen skete i. Det gøres ved, at jeg i starten af hver procedure, har en konstant som indeholder navnet på proceduren. Men det giver dobbelt bogholderi og større mulighed for fejl, da jeg altid skal huske at omdøbe konstanten, hvis jeg f.eks. omdøber procedurenavnet.
Så er det ikke muligt at få navnet på den procedure man befinder sig i. Har prøvet at lede hele VBE's objectmodel igennem, men uden at finde noget der kan bruge.
Er der nogen der kender en måde, hvorpå man kan se hvilken procedure man befinder sig i?
Det er ikke umiddelbart muligt at finde navnet på den procedure hvori fejlen er opstået, der bliver du nød til manuelt at ændre navnet i konstanten når/hvis du omdøber din procedure. Du kan dog få navnet på det dokument der har fremkaldt fejlen, hvilket kan illusteres vha. følgende kode:
Sub FejlHandlerTest() On Error GoTo FejlHandler
Dim iFejlGenerator As Integer iFejlGenerator = 56 / 0 'Division med nul resulterer i en fejl
FejlHandler: MsgBox "En fejl (fejlnummer " & Err.Number & ") er opstået i " & Err.Source & vbNewLine & _ "Fejlbeskrivelse: " & Err.Description End Sub
Hjælp til generelle VB og VBA rutiner såsom fremstilling af procedure headers og fejlhåndtering kan du finde i VB-/VBA-addin'en MZ-Tools. Dette er et gratis og yderst brugbart værktøj når der arbejdes med VB og VBA. Måske kan dennes fremstilling af fejlhandlere hjælpe dig? -Sion
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.