Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Laufzeitfehler '-2147024809 (80070057)'

Laufzeitfehler '-2147024809 (80070057)'
Jörg-HH
Guten Abend zusammen,
in einer Datei, die bisher gut lief, bekomme ich plötzlich einen Laufzeitfehler mit der o.g. Nummer. Im Text steht "Das Element mit dem angegebenen Namen wurde nicht gefunden". Der Hilfe-Button führt ins Nirwana.
Hat jemand 'ne Idee, in welche Richtung ich hier überhaupt denken muß...?
Grüße - Jörg
Anzeige
AW: Laufzeitfehler '-2147024809 (80070057)'
14.08.2009 23:21:43
Fettertiger
Hi Jörg,
ganz ohne Beispieldatei ist das natürlich schwierig. Entweder Du lädst hier mal Dein beispiel hoch, oder Du versuchst mal auf "Debuggen" zu gehen, und Dir den Code im VB-Editor anzuschauen.
Gruss
Fettertiger
hochladen geht nicht...
14.08.2009 23:34:26
Jörg-HH
Hi Tiger
die Datei ist zu groß und zu "betriebsgeheimnisvoll".
Debuggen geht nicht - der Button ist ausgegraut.
Die Meldung erscheint am Ende aller Abläufe - es scheint, daß alles gelaufen ist, wie es sein soll - trotzdem kommt der Fehler.
Grüße - Jörg
Anzeige
AW: hochladen geht nicht...
15.08.2009 01:23:51
Fettertiger
Hi Jörg,
ausgegraut ist der Button normalerweise wenn Dein Code passwort geschützt ist. Falls Du das Passwort kennst, kannst Du versuchen vor dem Auftreten des Fehlers den VBA Editor zu öffnen. Wenn dann der Fehler auftritt, kommst Du per "debuggen" direkt zur entspechenden Stelle im Code.
Grüße
Fettertiger
Anzeige
...is nich geschützt...
15.08.2009 10:26:12
Jörg-HH
Moin Tiger,
der Code ist nicht geschützt, und der VBA-Editor ist auf einem zweiten Bildschirm immer griffbereit geöffnet - der Debuggen-Button ist trotzdem grau.
Das Seltsame ist ja auch, daß ich zwar diverse Arbeiten in verschiedenen Codes der Datei gemacht habe - aber ausgerechnet an dem Modul, das da abläuft, wenn am Ende die Meldung kommt, hab ich seit zwei Wochen nix rumgeschraubt.
Ich muß mal die älteren Versionen der letzten Tage durchgehen, ab wann der Fehler auftritt. Vielleicht kann ich so eingrenzen, was ich zuletzt gemacht habe, bevor das auftrat.
Grüße - Jörg
Anzeige
AW: Laufzeitfehler '-2147024809 (80070057)'
14.08.2009 23:26:05
Uduuh
Hallo,
ohne den Code kann man gar nichts sagen.
Gruß aus’m Pott
Udo

AW: Laufzeitfehler '-2147024809 (80070057)'
14.08.2009 23:36:20
Jörg-HH
Hi Udo
die Datei ist 23MB groß. Hochladen geht nicht.
Hätte ja sein können, daß jemand schon mal so einen seltsamen Fehlercode gesehen hat...
Grüße - Jörg
Anzeige
PS
15.08.2009 00:05:20
Jörg-HH
...der Fehler 80070057 tritt wohl öfter mal auf, wenn man danach googelt, aber meist mit anderen Programmen - Monkey, MediaPl. usw., und da hlät der Code tatsächlich an. Bei mir ist er ja schon fertig, wenn der Fehler sich meldet.
Hier im Archiv ist das wohl nur einmal aufgetreten, aber das hab ich nicht übers Archiv gefunden, sondern mit Google.
wat nu? :-(((
Jörg
Anzeige
Laufzeitfehler zwar lokalisiert, aber noch unklar
15.08.2009 22:36:59
Jörg-HH
Hallo alle,
mein Problem besteht nach wie vor. Es tritt auf in einer Version, bei der ich Buttons von einem Blatt in ein anderes verlegt habe. Die Prozedur, die von dem Fehler betroffen ist, ist die da unten. Teile davon stammen von Tino. Einen screenshot von der Stelle, wo der Fehler auftritt, habe ich hochgeladen https://www.herber.de/bbs/user/63858.doc
Wär schön, wenn jemand eine Idee hätte, was da schief ist...
Grüße - Jörg
Public Sub ToDo_Formular_versandfertig()
'   - überträgt die Einstellungen im Blatt "Formular" auf die folgenden Blätter
'   - löscht alle Blätter außer config, ToDo und Formular
'   - erstellt Passwortschutz
'   - erstellt daraus eine neue Datei, die per Email versendet werden kann
'TEIL 1 - Formularblatt in Blätter für Auftragnehmer kopieren
Dim ws As Worksheet
Dim wsFormular As Worksheet
Dim bHinterFormular As Boolean
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
bHinterFormular = False
Set wsFormular = ThisWorkbook.Worksheets("Formular")
For Each ws In ThisWorkbook.Worksheets
If ws.Name  "config" _
And ws.Name  "ToDo" _
And ws.Name  "Formular" _
And bHinterFormular = True Then
ws.Cells.Clear                  'Inhalt im Blatt "Formular" leeren und markieren
wsFormular.Cells.Copy           'Inhalt im Blatt "Formular" kopieren
ws.Range("A1").PasteSpecial Paste:=xlPasteAll       'Inhalt in aktuelles Blatt der FOR- _
Schleife einfügen
wsFormular.Buttons("btnInfobereichDrucken").Copy    'Druckbutton kopieren
ws.Activate                     'im selben Blatt an eine bestimmte Stelle einfügen
ws.Range("BL257").Select
ws.Paste
ws.Range("A1").Select           'aktive Zelle auf A1 stellen
End If
'wenn die FOR-Schleife das Blatt Formular abgearbeitet  _
hat,
'dann liegen die "nächsten Blätter" hinter diesem...
If ws.Name = "Formular" Then
bHinterFormular = True
End If
Next ws
Application.CutCopyMode = False         'gestrichelte Linie um kopierte Zellen entfernen
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
wsFormular.Activate                     'wieder das Formularblatt aktivieren...
ActiveWorkbook.Save                     'Datei sichern. Damit ist die Datei fertiggestellt,
'die später die Rückläufer aufnehmen wird.
MsgBox "Es wird nun für" & ProjName & " " & TPName & vbLf & "das Formular für die  _
AUSSCHREIBUNG erstellt." _
& vbLf & "Speichern Sie es im Ordner Ihrer Wahl." & vbLf & "Anschliessend  _
kann es versendet werden.", vbOKOnly, "Ausschreibung erstellen"
FileSaveName2 = Application.GetSaveAsFilename(InitialFileName:=ProjName & " Ausschr " & TPName,  _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Datei für Ausschreibungsformular " & ProjName & " " & TPName & " erstellen:")
If FileSaveName2  False Then
ActiveWorkbook.SaveAs FileSaveName2
Else
Exit Sub
End If
'TEIL 2 - nicht benötigte Blätter löschen
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
MsgBox "Die Arbeitsmappe wird jetzt" _
& vbLf & "für die Ausschreibung bereinigt." _
& vbLf & "Dies kann einige Minuten dauern.", vbOKOnly, "Arbeitsblätter löschen"
Dim sAr() As String
Dim i As Integer
Dim mySh As Worksheet
For Each mySh In ThisWorkbook.Worksheets
If mySh.Name  "Formular" And mySh.Name  "config" And mySh.Name  "ToDo" Then
ReDim Preserve sAr(i)
sAr(i) = mySh.Name
i = i + 1
End If
Next mySh
Application.DisplayAlerts = False
Sheets(sAr).Delete
Application.DisplayAlerts = True
'TEIL 3 - Ausblenden im übriggebliebenen Formularblatt, was der User nicht sehen soll
'            und löschen, was Palo stört
'    Worksheets("Formular").Shapes("cmdDruckFormularBereich").Delete
'    Worksheets("Formular").Shapes("cmdFormularSpeichern").Delete
Worksheets("Formular").Shapes("CmBt_FormularFertig").Delete
Worksheets("Formular").Shapes("CmdBt_int_FormularKopieren").Delete
'Dim wsConfig As Worksheet
'Dim wsTarget As Worksheet
Set wsConfig = ThisWorkbook.Worksheets("Config")
'verbirgt alles, was rechts und unterhalb des Formulars ist (z.B. Sprachlisten, Durchlaufü _
bersicht):
With wsFormular
.Range(.Range(wsConfig.Range("B6").Value), .Range(wsConfig.Range("B7").Value)).EntireColumn. _
Hidden = True
.Range(.Range(wsConfig.Range("B8").Value), .Range(wsConfig.Range("B9").Value)).EntireRow. _
Hidden = True
.Range(.Range(wsConfig.Range("AI12").Value), .Range(wsConfig.Range("AI13").Value)).Copy
.Range(.Range(wsConfig.Range("AI12").Value), .Range(wsConfig.Range("AI13").Value)). _
PasteSpecial Paste:=xlPasteValues
End With
Application.EnableEvents = False
Worksheets(Array("config", "ToDo")).Visible = False
Application.EnableEvents = True
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayWorkbookTabs = False
End With
PW = InputBox("Vergeben Sie nun ein Passwort", "Abschluss")
wsFormular.Protect PW
ThisWorkbook.Protect PW
ActiveWorkbook.Save                     'Datei sichern (jetzt ist es die Ausschreibung)
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox ("     Fertig !")
End Sub

Anzeige
AW: Laufzeitfehler zwar lokalisiert, aber noch unklar
15.08.2009 23:14:47
Gerd
Hallo Jörg,
schaffen wir im Intranet u. die Verbindung ist weg oder die zu einem Drucker?
Schreibe mal direkt obendrüber:
AppActivate Application.Caption
Schaden tut 's nicht, ob 's dir etwas nützt, weis ich nicht.
Gruß Gerd
?
15.08.2009 23:57:20
Jörg-HH
Hallo Gerd
den Satz versteh ich nicht:
"schaffen wir im Intranet u. die Verbindung ist weg oder die zu einem Drucker"
auch dann nicht, wenn ich denke, du seist Schwabe (schaffen = arbeiten)
und wo "oben drüber" soll ich das mit dem Caption schreiben?
also der Fehler tritt auf unmittelbar nach Sheets(sAr).Delete
Grüße - Jörg
Anzeige
AW: ?
16.08.2009 00:31:57
Gerd
Hallo Jörg!
Glückwunsch!
Steht in allen Modulen ganz oben "Option Explicit" ?
Was mir noch einfällt: In solchen Fällen kann man im Editor --- Extras ---- Optionen ruhig mal
die Einstellung zur Fehlerbehandlung abändern.
Süddeutschland ist viel größer als das Schwabenland :-)
Gruß Gerd
l
Anzeige
Fehler gefunden! Debugger markiert d Fehler nicht!
16.08.2009 00:05:03
Jörg-HH
Hallo an alle, die es vielleicht in Zukunft mal betrifft:
Diesen Button
Worksheets("Formular").Shapes("CmdBt_int_FormularKopieren").Delete
hatte ich in ein anderes Blatt verschoben, dort auch alles zum Laufen gekriegt, aber nicht daran gedacht, daß er irgendwo im Code mal angesprochen wird.
Ich habe so lange im Dunkeln getappt, weil VBA zwar anhält, aber die Fehlerzeile nicht markiert, wie es sonst üblich ist.
Der Fehler ist offenbar selten - im Archiv war er bisher gar nicht erreichbar, aber über Suchmaschinen bekam ich doch einen Verweis ins Herber-Archiv. Ansonsten tritt die Fehlernummer 80070057 meist bei anderen Programmen auf.
Ich wünsche allen einen schönen Sonntag!
Jörg :-)))
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler '-2147024809 (80070057)' in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Fehler identifizieren: Wenn du den Laufzeitfehler '-2147024809 (80070057)' erhältst, liegt es oft daran, dass ein bestimmtes Element oder ein Objekt nicht gefunden werden kann. Überprüfe den Code und stelle sicher, dass alle Objekte, auf die verwiesen wird, existieren.

  2. Debugging aktivieren: Wenn der Debuggen-Button ausgegraut ist, kann das darauf hindeuten, dass dein VBA-Projekt passwortgeschützt ist oder du in einem bestimmten Modus arbeitest. Falls nicht, öffne den VBA-Editor und suche nach der Zeile, die den Fehler verursacht.

  3. Code überprüfen: Gehe den Code durch, insbesondere die Zeilen, die Objekte oder Formen referenzieren. Ein häufiger Fehler ist, dass du ein Form-Element (z.B. einen Button) verschoben oder gelöscht hast, ohne die Referenz im Code zu aktualisieren.

  4. Ältere Versionen zurückverfolgen: Wenn der Fehler nach bestimmten Änderungen auftritt, gehe zurück zu einer älteren Version der Datei und vergleiche die Unterschiede.


Häufige Fehler und Lösungen

  • Fehler bei Referenzen: Wenn du auf ein nicht existierendes Blatt oder Objekt verweist, tritt ein Laufzeitfehler auf. Stelle sicher, dass alle benötigten Objekte vorhanden sind.

  • Systemfehler &h80070057: Dieser Fehler tritt häufig auf, wenn ein Parameter ungültig ist. Überprüfe, ob du beim Aufruf von Funktionen oder Methoden die richtigen Argumente verwendest.

  • Debuggen nicht möglich: Wenn der Debuggen-Button grau ist, könnte dies an einem passwortgeschützten Projekt liegen. Überprüfe die Einstellungen im VBA-Editor.


Alternative Methoden

  • Fehlerbehandlung einfügen: Füge Error-Handler in deinen VBA-Code ein, um Laufzeitfehler besser zu handhaben. Zum Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    
    Fehlerbehandlung:
        MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Verwendung von AppActivate: Manchmal kann das Aktivieren der Anwendung helfen, insbesondere wenn der Fehler in Verbindung mit Druckern oder Netzwerkverbindungen auftritt. Füge AppActivate Application.Caption direkt über dem problematischen Code ein.


Praktische Beispiele

Hier ein Beispiel, wie du einen Button korrekt referenzierst, um Laufzeitfehler zu vermeiden:

Sub Beispiel()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Formular")

    ' Überprüfen, ob der Button existiert
    If Not ws.Shapes("CmdBt_int_FormularKopieren") Is Nothing Then
        ws.Shapes("CmdBt_int_FormularKopieren").Delete
    Else
        MsgBox "Button nicht gefunden!"
    End If
End Sub

Tipps für Profis

  • Option Explicit verwenden: Stelle sicher, dass am Anfang jedes Moduls Option Explicit steht, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Tippfehler zu vermeiden und macht die Fehlersuche einfacher.

  • Fehlerbehandlung anpassen: Ändere die Einstellungen zur Fehlerbehandlung im VBA-Editor unter "Extras" -> "Optionen". Eine detaillierte Fehlermeldung kann dir helfen, das Problem schneller zu identifizieren.

  • Excel gestrichelte graue Linie entfernen: Wenn du die gestrichelte Linie um kopierte Zellen entfernen möchtest, nutze Application.CutCopyMode = False.


FAQ: Häufige Fragen

1. Was bedeutet der Fehler 2147024809?
Der Fehler 2147024809 tritt auf, wenn ein Element nicht gefunden werden kann. Überprüfe deine Objektreferenzen und stelle sicher, dass alle benötigten Blätter oder Steuerelemente existieren.

2. Wie kann ich den Fehler umgehen?
Eine Möglichkeit besteht darin, die Fehlerbehandlung in deinem Code zu aktivieren und sicherzustellen, dass alle Objekte und Steuerelemente korrekt referenziert werden. Füge Error-Handler hinzu, um die Fehlerursache besser zu identifizieren.

3. Warum ist der Debuggen-Button ausgegraut?
Der Debuggen-Button kann ausgegraut sein, wenn dein Projekt passwortgeschützt ist oder wenn die Anwendung nicht im richtigen Modus ist. Stelle sicher, dass du im VBA-Editor Zugriff auf den Code hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige