Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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

Exception Problem

Exception Problem
14.05.2013 11:41:48
Maximilian
Servus Jungs,
ich habe ein Problem, hinter das ich absolut nicht steige. Folgende Funktion mit Methode, die diese Funktion ausführt:
Function sImport(F As String) As Boolean
'On Error Resume Next
report_this "Importiere Daten von: " & F & "..."
Set wbExt = Workbooks.OpenXML(F)
ThisWorkbook.Activate
'HIER KOMMT IMMER EIN FEHLER... ICH WEISS NICHT WARUM
'Err.Clear
Set sheetExt = wbExt.Worksheets(1)
sImport = Err.Number = 0
report_confirm sImport
End Function
Sub Test()
Err.Clear
sImport ("D:\sapLISEK_3M.xls")
MsgBox Err.Description
End Sub
Wie man sieht, ist "On Error Resume Next" deaktiviert. Es sollte also der Debugger starten, wenn ein Fehler kommt.
Wenn ich "Test" ausführe, wird wie gewollt die sapLISEK_3M.xls gestartet. Es kommt keine Debuggermeldung. Allerdings wirft der Befehl: MsgBox Err.Description folgende Fehlermeldung:
"Index außerhalb des gültigen Bereichs."
Seit ich das neue Office habe, tritt dieser Fehler auf. Vorher konnte ich die Funktion sImport ohne Probleme benutzen. Ich habe auch schon statt "OpenXML" einfach nur "Open" versucht. Daran liegt es jedoch nicht.
hat irgendjemand eine Idee?!

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wenn die Err.Number=0 ist, ist der Err-Index ...
14.05.2013 16:33:15
Luc:-?
…automatisch außerhalb des gültigen Bereichs, Maximilian,
denn zu 0 gehört keine Err.Description! Außerdem liefert deine Fkt sImport einen Wahrheitswert als Rückgabewert. Den kannst du doch abfragen, bspw so:
If Not sImport Then MsgBox Err.Description
Gruß Luc :-?

AW: Wenn die Err.Number=0 ist, ist der Err-Index ...
14.05.2013 19:13:10
Maximilian
Servus Luc,
also bei null brauchen wir nicht anfangen. ich weiß sehr wohl, dass sImport einen Wahrheitswert zurückgibt. Ich hab die Funktion ja implementiert.
Die Test-Methode ist nur ein Test - wie der Name schon sagt.
Fakt ist, dass Ein Fehler bei Set wbExt = Workbooks.OpenXML(F) geworfen wird. Allerdings nicht vom Debugger sondern nur per Err.Description erkennt werden kann.

Anzeige
AW: Wenn die Err.Number=0 ist, ist der Err-Index ...
14.05.2013 19:19:00
Maximilian
Meintest du das?
sImport = Err.Number = 0
Err.Number = 0 liefert doch einen Wahrheitswert zurück. Und der wird sImport zugeordnet. Das mach ich schon immer so damit gabs noch nie Probleme. Ist auch völlig logisch dass das so geht.

...Und ich schrieb, dass du den dann ja auch ...
14.05.2013 20:48:21
Luc:-?
…abfragen kannst, was du aber nicht tust!
Luc :-?

AW: ...Und ich schrieb, dass du den dann ja auch ...
14.05.2013 20:52:05
Maximilian
Darum geht es doch gar nicht. Es geht darum, dass ein anscheinend ein Fehler entsteht, obwohl der Befehl ordnungsgemäß ausgeführt wird. Der Fehler entsteht in der Funktion in dieser Zeile: Set wbExt = Workbooks.OpenXML(F)
Allerdings wird das Dokument ordnungsgemäß geöffnet. Also warum ein Error?

Anzeige
Da ist sicher gar kein Fehler oder woher ...
14.05.2013 21:03:44
Luc:-?
…willst du wissen, dass es genau da zum Fehler kommt, Maximilian?
Deine Methode, das festzustellen, ist allerdings fehlerhaft! Daher wird dann wohl auch der (Pseudo-)Fehler herrühren. Aber das willst du ja wohl nicht wahrhaben. Warum fragst du dann überhaupt erst? :-(
Luc :-?

AW: Da ist sicher gar kein Fehler oder woher ...
14.05.2013 21:12:05
Maximilian
ich weiß es, weil ich nach jeder zeile Msgbox Err.Code gemacht habe. Und erst nach dieser zeile ist der Err.Code = 9.
Also muss er wohl durch diese Zeile entstehen, oder nicht?!
Der Debugger wirft keine Fehlermeldung, Err.Code aber schon. Wie würdest du denn vorgehen?

Du weisst also mehr, als wir...
14.05.2013 21:45:56
EtoPHG
Maximilian,
Wie soll man einen solchen Code nachvollziehen, wenn nicht alle Fakten bekannt sind?
Woher sollen wir z.B. wissen was in den Prozeduren report_this, report_confirm ab geht und ob die Fehlerquelle nicht dort liegt?
Was macht eine Zeile wie ThisWorkbook.Activate für einen Sinn?
Wo und wie sind deine Variablen wbExt, sheetExt definiert?
Was für einen Zweck haben die auskommentierten Codezeilen?
Warum sehen wir deine, von dir erwähnten Msgbox Err.Code , Codezeilen nicht?
Was willst du von uns?
Gruess Hansueli

Anzeige
AW: Du weisst also mehr, als wir...
14.05.2013 21:50:18
Maximilian
warum traust mir nicht einfach, dass es so ist, wie ich sag. der Fehler ensteht in der Zeile
Set wbExt = Workbooks.OpenXML(F)
Davor ist Err.Code = 0, danach Err.Code = 9
Obwohl die Datei ordnungsgemäß geöffnet wird.

Public wbExt As Variant
Public sheetExt As Worksheet
Function sImport(F As String) As Boolean
Set wbExt = Workbooks.OpenXML(F)
ThisWorkbook.Activate
Set sheetExt = wbExt.Worksheets(1)
sImport = Err.Number = 0
End Function
Sub Test()
sImport ("D:\sapLISEK_3M.xls")
MsgBox Err.Description 'zeigt einen Fehler an. Warum? sapLISEK_3M.xls wird  _
ordnungsgemäß geladen &  die Variablen sind ordnungsgemäß belegt.
End Sub

Anzeige
Ich trau dem Braten nicht
14.05.2013 22:12:17
EtoPHG
Maximilan,
weil:
a) Level VBA bescheiden und ich 'unsinnigen' Code wie .Activate sehe.
b) dein erneut modifizierter Code überhaupt nichts Neues beweist!
c) Ein Index-Fehler kaum in einem Open-Statement auftreten kann
Gruess Hansueli

AW: Ich trau dem Braten nicht
15.05.2013 08:34:53
Maximilian
zu
a) was ist an activate unsinnig? Ich will ein Excel Dokument öffnen aber trotzdem das erste im Fokus halten.
b) Der Code weist das auf, warum ich gepostet habe: Einen Fehler.
c) ... tut es aber. probiers aus. ich finds ja auch merkwürdig, deswegen ja der ganze post!

Habs probiert, kein Fehler, und tschüss (owT)
15.05.2013 08:40:52
EtoPHG

Du meinst doch nicht wirklich Err.Code, ...
14.05.2013 21:47:29
Luc:-?
…Maximilian?
Ich schreibe am Anfang des Pgms On Error GoTo fmarke (fmarke →beliebige Sprungmarke zur Zeile der F-Behandlung) und am Ende des Pgms (bzw hier der Fkt oder meinethalben der TestProz) eine Fehlerbehandlung, zB so: fmarke: If CBool(Err.Number) Then … End If
Darin kannst du dann auch deine MsgBox unterbringen.
Übrigens, wenn der Wert von sImport = True ist, was du ja im gezeigten Code gar nicht benutzt hast, hat es auch keinen Fehler gegeben, was du ja bestätigst, denn die Aktion hat ja wohl geklappt.
Dein Verständnisproblem mag darauf basieren, dass du evtl noch nicht mitbekommen hast, dass die neueren XlVersionen empfindlicher auf VBA-Code-Ungereimtheiten reagieren als die alten. Deshalb ist es wohl bisher gut gegangen.
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige