Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

On Error Resume Next

On Error Resume Next
Ximena
Hallo ihr Lieben
Ich habe ein Makro und dies wird von anderen Leuten benutzt, die keine Ahnung von VBA haben. Deshalb möchte ich "On Error Resume Next" einbinden, damit die Leute gar nie einen Laufzeitfehler bekommen und somit der Editor geöffnet wird.
Mein Makro besteht aus verschiedenen Modulen die aus einem Hauptmodul mit Call aufgerufen werden. Kann ich nun einfach in jedes Modul ganz oben (unter dem sub) ein "On Error Resume Next" Befehl einfügen? Geht das? Macht man das?
Desweiteren hätte ich gerne, dass wenn das Makro zu Ende ist und es ein Error gab, der aber übersprungen wurde, es eine MsgBox gibt. Dort soll dann stehen: "Es gab einen Fehler und deshalb könnte etwas fehlen" oder so. Gibt es den Befehl "If there was a Error then" oder so :)
Wäre froh um Hilfe und liebe Grüsse
Ximena

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: On Error Resume Next
25.06.2012 15:16:18
ChrisL
Hi Ximena
Kann man, geht das? ja
Macht man? nein
Die wichtigsten Fehler Situation solltest du anderweitig abfangen (z.B. prüfen ob ein Blatt vorhanden ist, bevor man was reinschreibt). Wenn dann trotz allem ein Fehler auftritt, sollte man den Fehler/Ursache beheben. Wenn du im Nachhinein erfährst, dass jemand einen Fehler hatte, ist es oft zu spät um die genaue Situation zu reproduzieren.
Dennoch kann Resume Next sinnvoll sein, wenn es Quick & Dirty gehen soll resp. wenn du die Situation genau erkannt hast und ein Überspringen egal ist (in dem Fall brauchst du aber auch im Nachhinein keine Meldung mehr ausgeben).
Desweiteren... z.B. am Ende vom Code
If Error "" Then MsgBox "Es war ein Fehler aufgetreten"
Die richtige Fehlerbehandlung ist eine Wissenschaft für sich (mal googlen). Mein Tipp: Schau dass es zu keinen Fehlern kommt, dann musst du diese auch nicht behandeln ;)
cu
Chris
Anzeige
AW: On Error Resume Next
25.06.2012 15:54:48
Ximena
Hallo Chris
Danke für deine Antwort.
Natürlich ist mir klar, dass ich die Fehler lieber selbst behebe. Aber da ich nicht immer die Makro laufen lasse, und immer neue Fehler auftreten, will ich einfach nicht, dass die anderen User dann den Code sehen müssen.
Es kann zum Beispiel sein, dass ich die Makro zweimal hintereinander laufen lasse - genau gleich - und einmal geht alles gut und einmal gibt es einen Fehler und ich weiss einfach nicht, warum! Ich versuche die meisten zu beheben und trotzdem bleiben manchmal ein paar... -.-
Danke für die MsgBox!
Liebe Grüsse
Ximena
Anzeige
AW: On Error Resume Next
25.06.2012 16:49:47
fcs
Hallo Ximena,
man kann das Ganze auch noch ein wenig ausschmücken.
Wenn du deine Subs die per Call aufgerufen werden in Funktions umbenennst, dann kannst bei Fehler in einer Sub-Task auch direkt die Hauptprozedur kontrolliert beenden, falls es Sinn macht.
Wenn Prozeduren lang und komplex sind, sollte man einen Kontrollvariable mitlaufen lassen, damit der Fehler ggf. besser eingegrenzt werden kann.
Schaut dann etwa wie folgt aus.
Das mindeste an Fehler-Prüfung wäre Case 0 (Alles OK) und Case Else mit Meldetext.
Gruß
Franz
Sub Hauptprozedur()
If fncTest1 = False Then GoTo Beenden
'If fncTest2 = False Then GoTo Beenden
Beenden:
'Hier wird aufgeräumt
With Application
.ScreenUpdating = True
.EnableEvents = True
'etc. pp
End With
End Sub
Function fncTest1() As Boolean
Dim intFehler As Integer, strMsgTitel As String, strMsgTxt As String
Dim wks As Worksheet
On Error GoTo Fehler
fncTest1 = True
'Abschnitt 1
intFehler = 1
'Code ...
Set wks = ActiveWorkbook.Worksheets(2)
With wks
End With
'Abschnitt 2
intFehler = 2
'Code ...
'usw.
Fehler:
With Err
strMsgTitel = "Fehler - Makro: fncTest1"
strMsgTxt = "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf _
& "intFehler: " & intFehler
Select Case .Number
Case 0 'alles ist OK
Case 9 'index außerhalb gültiger Bereich
Select Case intFehler
Case 1
fncTest1 = False
strMsgTxt = strMsgTxt & vbLf & "2. Tabellenblatt ist in aktiver Datei """ _
& ActiveWorkbook.Name & """ noch nicht vorhanden!"
MsgBox strMsgTxt, vbInformation + vbOKOnly, strMsgTitel
Case Else
Resume Next
End Select
Case Else
fncTest1 = False
MsgBox strMsgTxt, vbInformation + vbOKOnly, strMsgTitel
End Select
End With
End Function

Anzeige

280 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige