Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Klasse unterstützt keine Automatisierung

Forumthread: Klasse unterstützt keine Automatisierung

Klasse unterstützt keine Automatisierung
01.08.2002 10:07:51
Nora
Halli Hallo;

ich habe mal eine Frage:

Wenn ich auf einer UserForm einen OKButton betätige, wird der Code nicht ausgeführt, sondern es erscheint eine Fehlermeldung:

Laufzeitfehler "430":
Klasse unterstützt keine Automatisierung.

Und dabei zeigt er auf das Wörtchen:
Hide


Was bedeutet das und was muss ich machen, damit er meine Befehle ausführt????

Über eine Antwort würde ich mich sehr freuen.
Nora

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Klasse unterstützt keine Automatisierung
01.08.2002 10:18:30
Michael Scheffler
Hallo,

Du hast keinen Code Deinem Ok-Button zugrunde liegen?

Gruß

Micha

Re: Klasse unterstützt keine Automatisierung
01.08.2002 10:22:59
Nora
Na ich habe schon einen Code zugrunde liegen, dieser ist sehr lang (und sicher auch sehr umständlich, aber bin noch nicht so lang dabei, :-) ):

Private Sub OKButton3_Click()
Dim i, k
Dim sap, bed As String
Dim strPath As String, strName As String
strPath = "g:\EK\Bedarfsbündelung\"
strName = "Materialbedarf.xls"
If WkbIsOpen(strName) = False Then
MsgBox ("Bitte öffnen Sie folgende Datei: G:\EK\Bedarfsbündelung\Materialbedarf.xls")
Hide
Exit Sub
End If

If Len(EigenschaftenF.TextBoxSAP.Text) < 14 Then
Beep
MsgBox ("Es wurde keine gültige SAP-Nr angegeben. Es sind zu wenig Zeichen vorhanden.")
EigenschaftenF.TextBoxSAP.SetFocus
Exit Sub
End If
Unload Me

If LieferantenF.TextBoxPreis.Value <> "" Then
If LieferantenF.ComboBoxPreis.Value = "" Then
MsgBox ("Geben Sie eine Währung für den Preis an!")
Exit Sub
End If
End If
EigenschaftenF.Enabled = False
EigenschaftenF.MousePointer = fmMousePointerHourGlass
DoEvents
Label11.Visible = True
DoEvents
sap = EigenschaftenF.TextBoxSAP.Value
For k = 2 To 1500
If Workbooks("Materialbedarf").Worksheets("Tabelle1").Cells(k, 1).Value = sap Then
bed = Workbooks("Materialbedarf").Worksheets("Tabelle1").Cells(k, 8).Value
End If
Next k
i = 1
Do
i = i + 1
Loop Until Worksheets("Flash").Cells(i, 1) = ""
With Worksheets("Flash")
.Cells(i, 1).Value = EigenschaftenF.TextBoxSAP.Value
.Cells(i, 2).Value = EigenschaftenF.TextBoxESN.Value
.Cells(i, 3).Value = EigenschaftenF.TextBoxSNR.Value
.Cells(i, 4).Value = EigenschaftenF.TextBoxBEZ.Value
.Cells(i, 6).Value = EigenschaftenF.TextBox1.Value
.Cells(i, 7).Value = EigenschaftenF.TextBox2.Value
.Cells(i, 8).Value = EigenschaftenF.TextBox3.Value
.Cells(i, 9).Value = EigenschaftenF.TextBox4.Value
.Cells(i, 10).Value = EigenschaftenF.TextBox5.Value
.Cells(i, 11).Value = EigenschaftenF.TextBox6.Value
.Cells(i, 14).Value = bed
.Cells(i, 15).Value = LieferantenF.TextBoxLNR.Value
.Cells(i, 16).Value = LieferantenF.TextBoxLKürzel.Value
.Cells(i, 17).Value = LieferantenF.TextBoxLName.Value
.Cells(i, 18).Value = LieferantenF.TextBoxLOrder.Value
If EigenschaftenF.OptionButton1.Value = True Then
.Cells(i, 5).Value = "parallel"
ElseIf EigenschaftenF.OptionButton2.Value = True Then
.Cells(i, 5).Value = "seriell"
End If
If LieferantenF.CheckBoxAktuell = True Then
.Cells(i, 19).Value = "x"
End If
If LieferantenF.ComboBoxPreis.Value = "Euro" Then
.Cells(i, 23).Value = LieferantenF.TextBoxPreis.Value
ElseIf LieferantenF.ComboBoxPreis.Value = "USD" Then
.Cells(i, 24).Value = LieferantenF.TextBoxPreis.Value
ElseIf LieferantenF.ComboBoxPreis.Value = "JPY" Then
.Cells(i, 25).Value = LieferantenF.TextBoxPreis.Value
End If
End With
Application.Run ("Sortieren_der_Flash")
TeileArt.OptionButton1.Value = False
TeileArt.OptionButton2.Value = False
TeileArt.OptionButton3.Value = False
TeileArt.OptionButton4.Value = False
TeileArt.OptionButton5.Value = False
TeileArt.OptionButton6.Value = False
TeileArt.OptionButton7.Value = False
EigenschaftenF.TextBoxSAP.Value = ""
EigenschaftenF.TextBoxESN.Value = ""
EigenschaftenF.TextBoxSNR.Value = ""
EigenschaftenF.TextBoxBEZ.Value = ""
EigenschaftenF.TextBox1.Value = ""
EigenschaftenF.TextBox2.Value = ""
EigenschaftenF.TextBox3.Value = ""
EigenschaftenF.TextBox4.Value = ""
EigenschaftenF.TextBox5.Value = ""
EigenschaftenF.TextBox6.Value = ""
EigenschaftenF.OptionButton1.Value = False
EigenschaftenF.OptionButton2.Value = False
LieferantenF.TextBoxLNR.Value = ""
LieferantenF.TextBoxLKürzel.Value = ""
LieferantenF.TextBoxLName.Value = ""
LieferantenF.TextBoxLOrder.Value = ""
LieferantenF.ComboBoxPreis.Value = ""
LieferantenF.TextBoxPreis.Value = ""
LieferantenF.CheckBoxAktuell.Value = False
EigenschaftenF.Enabled = True
Hide
End Sub

Ich denk mal, es hat irgendwas mit diesem Unload Me oder den paar Zeilen oben drüber zu tun, denn die habe ich zuletzt eingefügt.


Anzeige
Re: Klasse unterstützt keine Automatisierung
01.08.2002 10:45:09
Micahel Scheffler
Hallo,

dann starte mal Deine Form mit dem Debugger (F8 - Einzelschritt) und klicke auf den Ok-Button und schau mal, wo er sich aufhängt.


Ich schätez mal z.B. nach dem ersten End If, da hast Du Unload Me, dann geht es halt nicht weiter;-)

Gruß

Micha

;
Anzeige

Infobox / Tutorial

Klasse unterstützt keine Automatisierung in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne die UserForm in Excel und gehe zum VBA-Editor (Alt + F11).
  2. Finde den OK-Button, der den Code ausführt, und klicke doppelt darauf, um die zugehörige Subroutine zu öffnen.
  3. Überprüfe den Code auf den Befehl Unload Me. Dieser Befehl schließt die UserForm und könnte den Laufzeitfehler verursachen, wenn er vor dem Abschluss anderer Befehle ausgeführt wird.
  4. Verwende Debugging: Setze einen Haltepunkt (F9) vor den problematischen Abschnitt und führe den Code Schritt für Schritt mit F8 aus. So kannst du feststellen, wo der Code stoppt.
  5. Ändere oder entferne problematische Zeilen: Überlege, ob du die Zeile Hide durch eine andere Methode ersetzen kannst, um die UserForm zu schließen.

Häufige Fehler und Lösungen

  • Laufzeitfehler "430": Dieser Fehler tritt auf, wenn das Objekt, auf das zugegriffen wird, nicht korrekt instanziiert wurde. Überprüfe, ob alle erforderlichen Objekte richtig initialisiert sind.

  • Unload Me vorzeitig aufgerufen: Wenn du Unload Me verwendest, stelle sicher, dass alle anderen Befehle davor abgeschlossen sind. Andernfalls könnten sie nicht ausgeführt werden.

  • Verwendung von Hide: Achte darauf, dass Hide nicht vor dem Abschluss aller Operationen aufgerufen wird.


Alternative Methoden

Falls die oben genannten Lösungen nicht funktionieren, kannst du folgende alternative Ansätze ausprobieren:

  • Verwende Me.Hide statt Hide: In einigen Fällen kann der direkte Verweis auf Me das Problem lösen.

  • Ersetze Unload Me mit Me.Hide: Dies lässt die UserForm im Hintergrund und ermöglicht es, dass der Rest des Codes weiterhin ausgeführt wird, bevor die UserForm geschlossen wird.

  • Erstelle eine separate Subroutine: Lagere die Logik, die beim Drücken des OK-Buttons ausgeführt werden soll, in eine separate Subroutine aus und rufe diese auf, bevor du die UserForm schließt.


Praktische Beispiele

Hier ist ein Beispiel, wie du den Code anpassen kannst:

Private Sub OKButton3_Click()
    Dim i As Long, k As Long
    Dim sap As String, bed As String
    Dim strPath As String, strName As String
    strPath = "g:\EK\Bedarfsbündelung\"
    strName = "Materialbedarf.xls"

    If WkbIsOpen(strName) = False Then
        MsgBox ("Bitte öffnen Sie die Datei: " & strPath & strName)
        Me.Hide 'Ändere Hide zu Me.Hide
        Exit Sub
    End If

    ' Rest des Codes
    ' ...

    ' Mit einer separaten Subroutine weiterarbeiten
    Call ProcessData()
    Me.Hide
End Sub

Private Sub ProcessData()
    ' Hier kommt der restliche Code für die Verarbeitung
End Sub

Tipps für Profis

  • Nutze Option Explicit: Setze am Anfang deiner Module Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies kann helfen, Fehler zu vermeiden.

  • Verwende die DoEvents-Funktion: Damit kann Excel andere Aufgaben ausführen, während dein Code läuft. Dies kann helfen, die Benutzeroberfläche reaktionsschnell zu halten.

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um spätere Fehlerdiagnosen zu erleichtern. Dies ist besonders wichtig, wenn du mit komplexen Automatisierungen in Excel arbeitest.


FAQ: Häufige Fragen

1. Was bedeutet Laufzeitfehler "430"? Dieser Fehler zeigt an, dass die Klasse, auf die du zuzugreifen versuchst, keine Automatisierung unterstützt. Überprüfe, ob alle Objekte korrekt initialisiert sind.

2. Wie kann ich sicherstellen, dass mein Code ohne Fehler läuft? Nutze den Debugger, um deinen Code schrittweise auszuführen. Achte darauf, dass alle Variablen deklariert sind und alle Objekte korrekt erstellt wurden.

3. Was kann ich tun, wenn der OK-Button nicht funktioniert? Überprüfe den zugrunde liegenden Code und achte darauf, dass keine kritischen Befehle wie Unload Me zu früh aufgerufen werden. Versuche auch, den Code zu optimieren, um die Automatisierung in Excel zu verbessern.

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