Hallo liebes Forum,
bei der Ausführung meines Makros wird immer die Fehlermeldung 1004 „Anwendung- oder Objektdefinierter Fehler“ ausgegeben. Das Makro wird allerdings korrekt ausgeführt, beim debuggen wird nur die zeile eines anderen Tabellenblattes, wo der Aufruf des makros stattfindet, gelb eingefärbt. Ich kann den Fehler leider auch nicht finden. kann man die meldung irgendwie unterdrücken?
Viele Grüße
Achim
Hallo Achim,
bei der Ausführung meines Makros wird immer die Fehlermeldung
1004 „Anwendung- oder Objektdefinierter Fehler“ ausgegeben.
Das Makro wird allerdings korrekt ausgeführt, beim debuggen
wird nur die zeile eines anderen Tabellenblattes, wo der
Aufruf des makros stattfindet, gelb eingefärbt. Ich kann den
Fehler leider auch nicht finden. kann man die meldung
irgendwie unterdrücken?
probiere bitte mal folgendes:
->Extras, Optionen, Sicherheit, Makrosicherheit, Vertrauenswürdige Quellen,
Haken bei „Allen installierten Add-Ins und Vorlagen vertrauen“ setzen
Gruß
Marion
Hallo Achim,
ja, kann man:
on error resume next
'kaputte Zeile
'und dann aber auch
'das fehlehandling wieder einschalten
on error goto 0
ME solltest du aber lieber den Fehler suchen. Aus meiner Erfahrung rechen sich solche Konstrukte, die einfach Fehler abschalten.
mfg
Dirk.Pegasus
Hi Achim,
bei der Ausführung meines Makros wird immer die Fehlermeldung
1004 „Anwendung- oder Objektdefinierter Fehler“ ausgegeben.
kommt oft, das Makro will was machen was es grad nicht kann/darf
Das Makro wird allerdings korrekt ausgeführt,
nö, sonst käme ja keine Fehlermeldung.
beim debuggen
wird nur die zeile eines anderen Tabellenblattes, wo der
Aufruf des makros stattfindet, gelb eingefärbt.
Was soll das bedeuten?
Der Debugger meldet die Zeile wo der Fehler auftritt, das mit dem anderen Tabellenblatt habe ich nicht verstanden.
Poste mal hier deinen Code und auch in welchem Modul er steht.
Ich kann den
Fehler leider auch nicht finden. kann man die meldung
irgendwie unterdrücken?
Jain, man kann zwar
On error resume next
einfügen, aber das ist erstmal per se keine Lösung, erstens nutzt dies nicht bei allen Fehlern etwas, zweitens muß immer erst geklärt werden warum es bei welcher Zeile zu welchem Fehler kommt bevor man dies einsetzt.
Und grundsätzlich ist der Ansatz eine Fehlermeldung zu unterdrücken falsch, viel besser ist eine eingebaute Fehlerbehandlungsroutine, die dann aufgrund der Fehlerart das Makro weiterlaufen lässt oder mit einer hinweisenden Meldung abbricht.
Gruß
Reinhard
Hallo, Achim!
Wie Reinhard sagte: On Error Resume Next ist absolut Tabu!
Wie schon mal gepostet: Ich habe in jeder noch so kleinen Prozedur/Funktion eine Standardfehlerabfangroutine, die ungefähr so aussieht:
Sub Testmakro()
Const cstrProcName = "Testmakro" 'ErrorHandler:blush:$N=FindFiles
Dim zahl1 as double, zahl2 as double
'--------------------
On Error GoTo ErrorHandler
' nur als Beispiel
zahl1=inputbox("Zahl1")
zahl2=inputbox("Zahl2")
msgbox zahl1/zahl2
' noch ein Beispiel
kill "C:\DieseDateiGibt'sNicht.txt"
' Fehlerbehandlungsblock hinzugefügt vom Fehlerbehandlungsroutinen-Add-In. Bearbeiten Sie diesen Codeabschnitt NICHT.
'--------------------
ErrorHandler:
Select Case Err.Number
Case 0
case 53
' Datei nicht gefunden: ist mir egal, ich will sie ja eh löschen
' wenn das Ding nicht da ist, kann's auch nicht gelöscht werden
' das Ergebnis ist aber das gleiche, nämlich das gewünschte.
' Also mach einfach in der nächsten Zeile weiter
resume next
case 11
' Division durch 0: Ich vermutete schon, dass ein Anwender so
' was eingibt:
msgbox"Durch 0 kann man nicht teilen."
resume next ' oder ErrorHandler
Case Else
MsgBox "Fehler: " & vbTab & Err.Number & "-" & Err.Description & vbCrLf \_
& "Modul:" & vbTab & mcstrModName & vbCrLf \_
& "Funktion:" & vbTab & cstrProcName, vbExclamation + vbOKOnly, "Fehler!"
Resume ErrorHandler
End Select
' Ende des Fehlerbehandlungsblocks.
End Sub
Alles, was ich nicht vorhersehe, landet dann im case-else-Teil. Meistens unterbreche ich dann bei der Msgbox die Ausführung, mache kurz aus Resume ErrorHandler ein Resume 'ErrorHandler. Dann springt das Ding auf die Fehler verursachende Zeile, und ich kann dort genauer suchen, was faul ist.
Wobei der Fehler 1004 so ein Universalfehler ist…
Gruß, Manfred
Hallo,
erstmal vielen Dank für Eure Antworten. Wie so oft habe ich nach langem hin und her den Fehler ausfindig machen können. Das betreffende Makro in Tabelle4 wird aus Tabelle1 aufgerufen. Vor dem Call musste man nun ersteinmal Tabelle4.Activate áusführen. damit war der fehler behoben.
Viele Grüße
Achim