[VBA] Errorhandling

Bustard

Lt. Junior Grade
Registriert
Juli 2004
Beiträge
464
Moin Leute!

Wie kann ich eine Fehlermeldung (msgBox) ausgeben lassen wenn ich auf eine nicht vorhandene Datenbank zugreifen will oder keine Netzwerkverbindung besteht. Es kommt ja eine Fehlermeldung logischerweise, nur mit der kann kein normalo User was anfangen.

Bsp. Code:

open.connectionstring <--wenn Fehler hier auftritt gebe Msgbox aus.

Ich bin wirklich zu blöd, geht das irgendwie mit der On error Anweisung?
 
Hi,

baue deine Funktionen einfach so auf:

Code:
Private Function test() As Integer
'***********************************************************************
'*
'*  Name        :   test
'*  Description :
'*  Created     :   04.08.2004 - Administrator
'*
'*  Parameters  :   None
'*  Return Value:   None
'*
'*  Date        User        Description
'*  ****        ****        ***********
'*
'***********************************************************************
    Dim iResult As Integer    '    Rückgabewert
    
    On Error GoTo testError ' Fehlerbehandlung
    
    iResult = 0
    
    
    
    
'   -----------------Procedure-Exit---------------
testExit:
    
    
    '   Rueckgabewert der Funktion setzen
    test = iResult
    
    '   Prozedur verlassen
    Exit Function

'   -----------------Err-Handler---------------
testError:
    '   Fehler protokollieren und anzeigen
    Call MsgBox(Err.Description & "(" & Err.Number & ")  in " & mucModuleName & "|test", vbExclamation)
    iResult = 0
    '   Zur Exit-Marke gehen
    Resume testExit
End Function

Gruß

Toaster
 
Danke erstmal, aber wo muss ich denn das On error goto... einfügen? Vor das open.connectionstring oder danach? das mit den testexit verstehe ich auch nicht ganz wofür ich das brauche
 
Das On error kommt ganz an den anfang der funktion, das testexit baruchst du damit du am ende nicht in den errorhandler läufst. du kannst im Errorhandler auch noch einen Select Case mit den verschiedenen Errorcodes einbauen.

Verstanden? Ansonsten poste mal deine Funktion, und ich baue dir das ein.

Gruß

Toaster
 
Danke Dir es klappt jetzt. Nur ein Problem besteht noch und zwar kommen noch 2 andere Fehlermeldungen die durch eine dll generiert werden die ich brauche um die Verbindung mit der Datenbank herzustellen. Kann man die irgendwie unterdrücken so das nur noch die von mir generierte Fehlermeldung kommt?
 
sodele ich erklär des ma n bissi weil wir das in der schule auch gemacht ham!
Sub plus()

Dim zahl1 As Integer \\(Format der zahl 1 (Variablen) festlegen)
Dim zahl2 As Integer \\(Format der zahl 2 (Variablen) festlegen)
Dim ergebnis As String \\(Format des ergebnis (Variablen) festlegen)
\\Jetzt kommt die onerror funktion
On Error GoTo abbruch

\\Nun gibt der User mit einer Input Box seine Zahlen ein:

zahl1 = Inputbox ("Bitte geben sie die erste Zahl ein:","Rechner")
zahl2 = Inputbox ("Bitte geben sie die zweite Zahl ein:","Rechner")

\\Rechnung
ergebnis = zahl1 + zahl2

\\Nun kommt die Ausgabe

MsgBox "Der Endwert ist :" & ergebnis &"

\\Funktion beenden
Exit Sub

abbruch:
MsgBox "Fehlerhafte Eingabe!", vbCritical + vbOKOnly, "Fehler!"
\\Prozedur beenden
End Sub

Hoffe das hat euchein bisschen weitergeholfen!
 
Mein Code sieht so aus wie in deinem Beispiel.

Private Function Test() as integer

dim ...
dim iResult as Integer

On Error GoTo errormsg
iResult = 0

Set cn = New ADODB.Connection

Prefo.Init

cn.Open Prefo.ConnectionString '<-- hier soll das Errorhandling greifen

'Prefo ist eine DLL die über "Verweise" mit angewählt werden muss und aus einen anderen Programm stammt. Von dieser DLL werden die 2 anderen Fehlermeldungen generiert, die ich aber unterdrücken will. Nach den 2 Fehlern greift dann der Errorhandler erst.


weiterer Code

'am Ende der Funktion:
testExit:


' Rueckgabewert der Funktion setzen
test = iResult

' Prozedur verlassen
Exit Function

' -----------------Err-Handler---------------
errormsg:
' Fehler protokollieren und anzeigen
'Call MsgBox(Err.Description & "(" & Err.Number & ") in " & mucModuleName & "|test", vbExclamation)

iResult = 0
' Zur Exit-Marke gehen
Resume testExit
End Function
 
ja die brauch ich, aber das dachte ich mir schon das das nicht so einfach ist. Ich danke dir trotzdem vielmals für deine Hilfe
 
Hi Bustard!
Ich weiß es nicht genau aber ich denke schon das man das so machen kann wir hatten halt in der Schule nur n bissl vba....
Und ich bin jetzt nicht so der VBA-König wollte nur posten wieviel ich zur Errorfunktion weiß.. (längst nicht soviel wie du!) :D

Ich glaub ich kann jetzt nicht mehr weiterhelfen! :(
 
Is doch in Ordnung, deine Funktion ist ja richtig, ich hab nur noch n anderes Problem was scheinbar nicht so leicht zu lösen ist. Naja was solls muss der Anwender dann eben 2 mal mehr klicken.
 
Die DLL gehört zu einer ziemlich teuren Branchensoftware und dient als VBA und Datenbankschnittstelle. Die kann ich dir also nicht so einfach zur Verfügung stellen. Naja mal sehen was Chef meint wenn er aus Urlaub zurück ist. So schlimm isses ja nu auch nicht.
 
Zurück
Oben