Clever-Excel-Forum

Normale Version: Bei Fehlermeldung 13 Text anzeigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich habe ein Makro "Main", welches nacheinander verschiedene Makros aufruft. Bei diesen "unter"-Makros kann (sollte der User ein Tabellenblatt oder eine bestimmte Zelle falsch titulieren) die Fehlermeldung 13 auftauchen. Ich würde dem User (der nicht Makro-afin ist) gerne eine Meldung ausgeben ("Bitte überprüfen Sie den Tabellenblattnamen oder die zugehörige Zelle").
Ich habe an einer andere Stelle gelesen, dass man dies mit folgendem Code erreichen kann:

If Err.Number = 13 Then

        MsgBox "Mein Text"

End If

Jetzt stellt sich mir die Frage, wie ich das in mein(e) Makro(s) einbaue. Benötige ich diese Fehlermeldung innerhalb jedes unter-Makros oder kann ich es im Makro "Main" irgendwo platzieren? Wenn ich es innerhalb des unter-markos einfüge, kommt (logischerweise) die Fehlermeldung leider schon bevor es zu meiner Fehlercodeausgabe kommt, da "Sub_Name des unter-Makros" natürlich ganz am Anfang steht und bei falschem Tabellenblattnamen/falscher Zellenbeschreibung schon der Fehler generiert wird.

Ich hoffe ich konnte mich verständlich ausdrücken.

Besten Dank im Voraus und viele Grüße,

Michael
Hallo Michael,

lies Dir dazu mal dieses Tutorial durch: Fehlerbehandlung (0) - Einführung

Gruß Uwe
Warum hat der User überhaupt die Möglichkeit eine ungültige Name zu wählen ?
Bin mal gespannt, snb, ob Dir eine alternative Füllung der ComboBox bekannt ist:
Code:
Sub FillDD()
For i = 1 To Worksheets.Count
  ComboBox1.AddItem Worksheets(i).Name
Next
End Sub

Gruß Ralf
z.B


Code:
Sub M_snb()
   for each sh in sheets
     c00=c00 & "|" & sh.name
   next

   combobox1.list=split(mid(c00,2),"|")
End Sub
Hallo zusammen,

ich habe ein Makro "Main", welches nacheinander verschiedene "unter-"Makros ausführt. Bei diesen unter-Makros ist es wichtig, dass sowohl die Tabellenblätter als auch die Überschrift in einer Tabelle korrekt geschrieben sind. Bei fehlerhafter Bezeichnung des Tabellennames oder der Tabelleüberschrift kommt es zur Fehlermeldung 13 (da das Makro natürlich keinen Zugriff herstellen kann). Der user meiner Excel-Datei ist nicht Makro-affin. Ich würde ihm gerne über eine Ausgabe anzeigen, wenn es zur Fehlermeldung 13 kommt, allerdings in eigenen Worten. Es wäre schön, wenn bei Auftreten dieses Fehler ein Text "Bitte Tabellenblattnamen und Tabellenüberschriften überprüfen" angezeigt wird. Ich habe gesehen, dass dies durch folgenden (sinngemäß) Code erreicht werden kann:

If Err.Number = 13 Then

   MsgBox "Hier mein Text", vbInformation

Exit Sub

Wie baue ich dieses Teil alelrdings in mein Makro ein? Wenn ich erst im unter-Makro einfüge, kommt natürlich die Fehlermeldung davor, da ja "Sub Name_des_Moduls" dann schon falsch sein kann. Daher müsste diese Abfrage wohl schon im Main auftauchen.

Danke für eure Hilfe,

viele Grüße,

Michael
Danke für eure Hilfe!

@Uwe: Ich habe mir das angeschaut. Allerdings stellt sich mir die Frage, wie schon allein den Aufruf einer Sub (meine unter-Makros) auf einen Fehler überprüfen kann. Denn ist ein Tabellenblatt nicht richtig tituliert, kommt es schon direkt beim Aufruf zum Fehler. Die Bsps deines Links überprüfen ja immer direkt eine Division innerhalb einer Sub. Meine Fehler-Überprüfung müsste allerdings vorher ansetzen.

@snb und RPP63: Mit euren Beiträgen komme ich nicht wirklich weiter =/

Viele Grüße,

Michael
Hallo,

entweder hast Du den Text aus dem Link nicht richtig gelesen oder nicht verstanden:


Zitat:Fehlerbehandlung ist für Fehler, die während der Laufzeit auftreten, d.h. VBA kann etwas nicht verarbeiten.

Sei es so etwas Simples wie eine Division durch 0, ein Zugriff auf ein Tabellenblatt, welches nicht existiert oder scheinbar komplexere Dinge wie Zugriffe auf ein Objekt, welches nicht oder so nicht zur Verfügung steht.

Und dann folgen die weiteren Kapitel, ist genau auf Dein Problem zugeschnitten!
Hallo Michael!
Zitat:@snb und RPP63: Mit euren Beiträgen komme ich nicht wirklich weiter =/
Eine Fehlerbehandlung sollte nur bei unerwarteten Fehlern greifen!
Die Falscheingabe eines Tabellennamens darf der geneigte Programmierer aber durchaus voraussetzen.
Entweder Du füllst eine ComboBox in einer UserForm mit den vorhandenen Tabellennamen (snb and me),
oder Du prüfst im Programmverlauf, ob das Sheet überhaupt vorhanden ist.
Die On Error - Methode sollte nur dafür eingesetzt werden, wenn Du nicht "klug" programmiert hast.

Zeig mal Deinen Code!

Gruß Ralf
Hallöchen,

bei der Fehlerbehandlung sollte man auch den Aufwand berücksichtigen. Es macht schon einen Unterschied, ob man wegen 3 Zeilen code 30 Zeilen Fehlerbehandlung schreiben muss, um alle Eventualitäten mit qualifizierten Meldungen abzudecken, oder mit On Error Goto ErrorHandler eine Standardmeldung ausgibt und damit zumindest verhindert, dass der Nutzer die Debuggen-Meldung bekommt.
Ich denke, 27 Codezeilen einzusparen ist auch nicht unklug. Und es könnten durchaus deutlich mehr sein, je nach Problemstellung.

Michael, prüfe vor Aufruf des Sub, ob das betreffende Blatt vorhanden ist.

Das geht relativ einfach mit diesem Prinzip:
Code:
Sub Test
If IsError(Application.Evaluate("=Liste!A1")) Then MsgBox "Nix Blattda" Else MsgBox "Blattda"
End Sub

Das Ding hat nur den Haken, dass bei vorhandenem Fehlerwert in der angesprochenen Zelle auch Nix Blattda kommt Sad
Seiten: 1 2