title image


Smiley Re: Abfrage des aktuellen Prozedurnamens im VBA-Code
Hallo Chris,automatisch geht das soviel ich weiss nicht, kann man sich aber selber basteln!Schoen das sich auch mal jemand zum Thema Fehlerbehandlung Gedanken macht.Ich habe den Eindruck, das dieses oftmals viel zu kurz kommt!Ich behelfe mir bei Subs dabei so:Sub MyName() Dim strRoutine As String Dim varResult As Variant On Error GoTo ErrorHandler varResult = 1 / 0Exit SubErrorHandler:strRoutine = "Sub MyName ()"MsgBox "Error # " & CStr(Err.Number) & vbCrLf _& "was generated while executing:" & vbCrLf & vbCrLf _& strRoutine & vbCrLf & vbCrLf _& "Reported by: " & vbTab & Err.Source & vbCrLf _& "Description: " & vbTab & Err.Description, vbCriticalEnd SubBitte beachte das Leerzeichen vor den Klammern in der Wertzuweisung der Variablen strRoutine.Mit diesem Leerzeichen werden bei Aenderung des Functions /oder Sub -Names mittels suchen und ersetzen (Option nur ganzes Wort) der Namenseintrag nicht uebersprungen.Fuer Funktionen innerhalb eines Makroablaufes kann man ggf. auch die Methode fuer Subs verwenden.Bei Funktionen die jedoch in einem Tabellenblatt genutzt werden sollen halte ich es fuer sinnvoller, alle Variablen genau mit Ihrem erwartetem Typ zu deklarieren, ebenso gueltig fuer das Resultat.Sonst waehre im Falle von Fehlern, der User dann ggf. mit unendlich vielen Messageboxen konfrontiert.Dann waehre es wohl besser die moeglichen Fehlerquellen schon in der Code einbauen und Excels Moeglichkeiten zur Fehlerunterscheidung zu nutzen, z.B.:Function Division(Zaehler As Double, Nenner As Double) As Double On Error GoTo ErrorHandler If Nenner = 0 Then GoTo ErrDivZero Else Division = Zaehler / Nenner Exit FunctionErrDivZero: Division = CVErr(xlErrDiv0) Exit FunctionErrorHandler: Division = CVErr(xlErrValue)End FunctionNicht zu vergessen "Option Explicit", als erstes Statement im Code.Ist zwar mehr Aufwand beim Programmieren, hilft bei der Fehlersuche aber enorm.Viele GruesseNorbert

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: