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

Laufzeitfehler - Automatisierungsfehler

Forumthread: Laufzeitfehler - Automatisierungsfehler

Laufzeitfehler - Automatisierungsfehler
28.09.2022 18:52:59
Chris
Hallo Zusammen,
ich bekomme beim Ausführen des folgenden Codes einen Fehler:
"Laufzeitfehler '-2147319767 (80028029): Automatisierungsfehler - Ungültige Vorreferenz oder Referenz zu unkompiliertem Typ. "
Der fehler tritt beim Fett gedruckten Code-Teil auf. Das Makro hat vorher einwandfrei funktioniert und die Tabe heißt wirklich "TR-List"
Danke für euren Input was hier falsch laufen könnte.
Chris
Hier der Code:
Option Explicit
'für Ordnererstellung:
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
'für Berechnungsdauer:
Private Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
Sub IRR_Separate_Run()
'Berechnungsmodus Automatic:
Application.Calculation = xlAutomatic
Sheets("TR-List").Select
'Inhalte aus Vorgängerlauf löschen+hidden cells:
Dim Z As Range
For Each Z In ActiveSheet.Range("D4:D86").Cells
Z.ClearContents
Next Z
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler - Automatisierungsfehler
28.09.2022 19:10:36
Daniel
Hi
naja, den fett gedruckten Codeteil würde so in eine einzige Zeile schreiben:

Sheets("TR-List").Range("D4:D86").ClearContents
Gruß Daniel
AW: Laufzeitfehler - Automatisierungsfehler
28.09.2022 19:39:42
Chris
Hallo Daniel,
danke für die schnelle Rückmeldung, leider kommt der gleiche Fehler nach wie vor. Ich poste jetzt mal das gesamte Makro, auch wenn der Fehler bereits im oberen Segment passiert. Vielleicht weiß noch jemand was man bei so einer Fehlermeldung machen kann?
Option Explicit
'für Ordnererstellung:
Private Declare

Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
'für Berechnungsdauer:
Private Declare 

Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)

Sub IRR_Separate_Run()
'Berechnungsmodus Automatic:
Application.Calculation = xlAutomatic
Sheets("TR-List").Range("D4:D86").ClearContents
'Alter Code:
'Inhalte aus Vorgängerlauf löschen+hidden cells:
'Dim Z As Range
'For Each Z In ActiveSheet.Range("D4:D86").Cells
'Z.ClearContents
'Next Z
'alter Code Ende
'Datum eintragen:
Sheets("TR-List").Select
Range("C1").Select
Selection.Copy
Sheets("Spec IRR").Select
Range("G1").Select
ActiveSheet.Paste
Sheets("TR-List").Select
Application.CutCopyMode = False
'Select Startposition B4 oder nächste Sichtbare zeile:
Range("B4").Select
If ActiveCell.EntireRow.Hidden = True Then
ActiveCell.Offset(1, 0).Select
Do Until ActiveCell.EntireRow.Hidden = False
ActiveCell.Offset(1, 0).Select
Loop
End If
'neue startposition loop:
Do Until ActiveCell.Value = ""
'IRR Kopieren:
Sheets("Spec IRR").Range("G2").Value = ActiveCell.Value
Sheets("TR-List").Select
ActiveCell.Offset(0, 2).Value = Sheets("Spec IRR").Range("g4").Value
'nächster Fonds:
ActiveCell.Offset(1, 0).Select
'neu hidden cells jump
If ActiveCell.EntireRow.Hidden = True Then
ActiveCell.Offset(1, 0).Select
Do Until ActiveCell.EntireRow.Hidden = False
ActiveCell.Offset(1, 0).Select
Loop
End If
Loop
Range("D4:D86").Select
Selection.Style = "Percent"
Selection.NumberFormat = "0.00%"
'speichern
Sheets("TR-List").Select
Range("A1").Select
If TypeOf Selection Is Range Then Selection.Calculate
MakeSureDirectoryPathExists ActiveWorkbook.Path & "\Gespeicherte Durchläufe\"
ActiveWorkbook.SaveCopyAs Filename:=ActiveWorkbook.Path & "\Gespeicherte Durchläufe\" & "Berechnung " & Format(Range("a1"), "dd/mm/yyyy hh/mm") & ".xlsm"
MsgBox "Verarbeitung erfolgreich - Gespeichert in 'Gespeicherte Durchläufe' !", vbInformation, " erstellt!"
End Sub

Anzeige
AW: Laufzeitfehler - Automatisierungsfehler
28.09.2022 20:51:40
Chris
Hallo Daniel,
danke für die schnelle Rückmeldung, leider kommt der gleiche Fehler nach wie vor. Es scheint dass es mit dem File selbst zu tun hat.
Ich habe eine Vorgängerversion mit dem gleichen Makro und in dieser funkioniert das Makro. Wie so etwas sein kann, hat jemand so eine (ähnliche) Meldung schonmal bekommen? Viele Grüße
Anzeige
AW: Laufzeitfehler - Automatisierungsfehler
29.09.2022 12:43:26
Jowe
Hallo,
sofern das Problem nicht gelöst ist, versuch doch mal dies:
Kopiere das Blatt,
lösche das Originalblatt
benenne das kopierte neue Blatt um in den Namen des gelöschten Originalblattes
Gruß
Jochen
AW: Laufzeitfehler - Automatisierungsfehler
29.09.2022 21:56:31
Chris
Hallo Jochen,
danke das ist interessant, ich habe das für alle Tabellenblätter gemacht die in dem Makro angesprochen wurden und tatsächlich:
JETZT KLAPPT ES!
Vielen Dank!
Chris
Anzeige
AW: tja Microsoft halt - Gerne
30.09.2022 13:22:17
Jowe
AW: Laufzeitfehler - Automatisierungsfehler
28.09.2022 22:16:35
ReginaR
Hallo Chris,
prüf mal, ob in der Datei alle benötigten Verweise gesetzt sind. Geh mal im VBA-Editor in das Menü "Extras" und dort auf "Verweise". Es sollten zumindest die Verweise auf die Microsoft Excel Library und auf Visual Basics for Applications gesetzt sein. Ich vermute mal, dass die Excel Library nicht gesetzt ist.
VG Regina
Anzeige
AW: Laufzeitfehler - Automatisierungsfehler
29.09.2022 10:16:04
Chris
Hi Regina,
danke für den Hinweis, die Verweise sind auch aktiviert. "VB for Applications" , "Microsoft Excel 16.0 Object Library", "OLE Automation" und "Micorosoft Office 16.0 Object Library". Daran liegt es auch nicht. Aber danke
Chris
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler - Automatisierungsfehler in VBA beheben


Schritt-für-Schritt-Anleitung

  1. Fehlermeldung prüfen: Der häufigste Laufzeitfehler, den Du in Excel VBA bekommst, ist der Automatisierungsfehler - Ungültige Vorreferenz oder Referenz zu unkompiliertem Typ. In der Regel tritt dieser Fehler mit dem Code 2147319767 (80028029) auf, wenn ein Verweis nicht korrekt gesetzt ist oder ein Objekt nicht gefunden werden kann.

  2. Verweise prüfen: Gehe im VBA-Editor zu Extras -> Verweise. Stelle sicher, dass alle benötigten Verweise aktiviert sind, insbesondere die "Microsoft Excel Object Library" und "Visual Basic for Applications".

  3. Code anpassen: Wenn der Fehler weiterhin besteht, versuche den Code zu vereinfachen. Zum Beispiel kannst Du den Code für das Löschen von Inhalten in einer Zeile zusammenfassen:

    Sheets("TR-List").Range("D4:D86").ClearContents
  4. Blätter kopieren: Falls der Fehler weiterhin auftritt, könnte es helfen, das betroffene Arbeitsblatt zu kopieren, das Original zu löschen und das neue Blatt entsprechend umzubenennen.


Häufige Fehler und Lösungen

  • Fehler: Automatisierungsfehler - Ungültige Vorreferenz
    Lösung: Überprüfe, ob alle benötigten Objekte und Verweise korrekt eingerichtet sind. Oftmals kann das Löschen und Erstellen eines neuen Blatts das Problem lösen.

  • Fehler beim Zugriff auf ActiveCell
    Lösung: Stelle sicher, dass die Zelle, auf die Du zugreifen möchtest, nicht ausgeblendet ist. Verwende ActiveCell.EntireRow.Hidden, um dies zu überprüfen und entsprechende Anpassungen vorzunehmen.


Alternative Methoden

  • Verwendung von .Value: Anstatt Selection.Copy und ActiveSheet.Paste zu verwenden, kannst Du direkt mit .Value arbeiten, um den Code effizienter zu gestalten. Beispiel:

    Sheets("Spec IRR").Range("G2").Value = ActiveCell.Value
  • Fehlerbehandlung: Implementiere eine einfache Fehlerbehandlung in Deinem Code, um das Debugging zu erleichtern:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Fehler: " & Err.Description

Praktische Beispiele

Hier ist ein vollständiges Beispiel eines Makros, das den beschriebenen Fehler umgeht:

Sub IRR_Separate_Run()
    On Error GoTo ErrorHandler
    Application.Calculation = xlAutomatic
    Sheets("TR-List").Range("D4:D86").ClearContents

    ' Datum eintragen
    Sheets("TR-List").Range("C1").Copy Destination:=Sheets("Spec IRR").Range("G1")

    ' Weiterer Code hier...

    Exit Sub
ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
End Sub

Tipps für Profis

  • Vermeide .Select und .Activate: Direkte Referenzen sind schneller und robuster. Vermeide die Verwendung von Select und Activate, um das Risiko von Automatisierungsfehlern zu minimieren.

  • Fehlerquellen identifizieren: Teste Teile Deines Codes schrittweise, um genau zu identifizieren, wo der Fehler auftritt. Das hilft, den spezifischen Punkt des Fehlers zu finden.


FAQ: Häufige Fragen

1. Was bedeutet der Fehler 2147319767?
Dieser Fehler weist auf einen Automatisierungsfehler in VBA hin, meist verursacht durch ungültige Verweise oder Objekte.

2. Wie kann ich sicherstellen, dass alle Verweise korrekt gesetzt sind?
Öffne den VBA-Editor, gehe zu Extras -> Verweise und überprüfe, ob alle benötigten Bibliotheken aktiviert sind.

3. Was kann ich tun, wenn der Fehler mit ActiveCell auftritt?
Überprüfe, ob die aktive Zelle in einer ausgeblendeten Zeile liegt und passe Deinen Code entsprechend an, um damit umzugehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige