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

Typ-Fehler bie Dim X as Dataobject

Forumthread: Typ-Fehler bie Dim X as Dataobject

Typ-Fehler bie Dim X as Dataobject
14.02.2005 17:00:40
Reinhard
Hallo Wissende,
wohl wieder Ende der Fahnenstange bei mir bzw. zurückrutschen zu den Basics der Definitionen :-(
Was will der Editor da von mir? Im Internet steht das oft genauso, warum meckert der Compiler da an der im Remark gezeigten Stelle?

Sub kopieren_test()
Dim MyData As DataObject ' Compiler-Fehler:Benutzerdefinierter Typ nicht definiert
Set MyData = New DataObject
MyData.SetText "Hello World"
MyData.PutInClipboard
End Sub

Dabei funktionierte es auch wenn man die Dim-Anweisung weglässt. (Denn ist Teilcode aus meinem jeanniefür arme posting in Forumstechnik) Und da lief es schon öfters problemlos auch ohne die Dim-Zeile, aber halt nicht immer, jetzt will ich halt genau wissen warum es manchmal nicht geht und wie die Abhilfe aussieht bzw wie es richtig aussehen muss.
Also 2 Fragen :
a) warum lief es 90/10 auch ohne die Dim -Anweisung?
b) wieso läuft es mit Dim-Anweisung nicht?
Danke für etwige Hilfe
Gruß
Reinhard
Anzeige
AW: Typ-Fehler bie Dim X as Dataobject
Ute
Ist ein Verweis auf die Forms 2.0 Bibliothek gesetzt?
mfg Ute
AW: Typ-Fehler bie Dim X as Dataobject
Kurt
Das DataObject ist ein Element der Bibliothek FM20.dll.
Wenn der Verweis darauf nicht gesetzt ist, kannst du es nicht verwenden.
Schau mal in der VBE unter Menü Extras|Verweise, ob da der Verweis auf
die Microsoft Forms 2.0 Object Library(FM20.dll) gesetzt ist.
Anzeige
Danke Ute & Kurt
Reinhard
Hi euch Beiden,
danke sehr für den Hinweis auf die "forms", über google krieg ich raus wie ich das im Makro einbinde, ich nehme an, damit ist das eine Problem gelöst, also warum es nicht läuft.
Bliebe noch das Problem warum es ohne Einbindung mehrfach lief.
Da ich ja den o.g. Code nicht nur selbst mehrfach problemlos ausgeführt habe, OHNE Einbindung von irgendwas, sondern auch hier in Forumstechnik und auch in einem anderen Foren postete, wo andere Leute das ausprobierten, und es bei denjenigen lief, mutmaße ich, (davon ausgehend nix ist speziell eingebunden) wenn ich Excel frisch starte, läuft der Code nicht, aber wenn ich dann , keine Ahnung, ein SteuerButton erstelle oder sowas, dass dann Excel im Geheimen den Verweis auf Forms setzt.
Nur so kann ich mir das Ganze erklären.
Danke für die Antworten, ich setz noch mal die Frage auf noch offen, vielleicht weiss ja jemand was Excel bewegt diesen Verweis von sich aus zu setzen.
Gruß
Reinhard
Anzeige
personl.xls und fm20.dll (MS Forms 2.0 Object Libr
Reinhard
Hallo Wissende,
im Erignis Workbook-Open der personl.xls setze ich den Verweis auf Microsoft Forms 2.0 Object Library mit
Application.VBE.ActiveVBProject.References.AddFromFile "fm20.dll"
Das klappt und auch im Codebereich der dann geöffnetetn Mappe1 ist der Verweis gesetzt.
Aber, öffne ich eine beliebig andere datei über Datei--Öfnnen, so ist in deren Codebereich, der Verweis nicht gesetzt?
Wie kann ich das erreichen dass da auch durch personal.xls der Verweis gesetzt wird für alle später geöffneten Dateien?
Manuelles Setzen des Verweises ist bei der nächsten Excel-Instanz weg.
Gruß
Reinhard
Anzeige
AW: personl.xls und fm20.dll (MS Forms 2.0 Object Libr
Tim
Dazu ist ein Klassenmodul z.B. in der persönlichen Mappe nötig, das den Verweis bei jedem neuen Workbook setzt.
Du kannst auch eine Vorlage verwenden, bei der der Verweis gesetzt ist.
Tim
Verweise bei Workbook, Klasenmodul personl.xls
18.02.2005 02:03:32
Reinhard
Merci Tim,
das mit der Vorlage, okay, das krieg ich sicher hin.
Aber interessieren würde mich der Code für das Verweise setzen in einem Klassenmodul in der Personl.xls.
Außer in der personl.xls Einfügen---Klassenmodul auszuwählen fehlt mir dafür alles weitere Wissen :-()
Wie würde denn da der Code lauten?
Dankeschön
Reinhard
Anzeige
AW: Verweise bei Workbook, Klasenmodul personl.xls
Tim
Klassenmodule sind nichts für Anfänger, nimm die Vorlagenlösung.
Tim
Lösung
Reinhard
Hallo Interessierte,
ich habe eine Lösung im Internet gefunden und für meine Zwecke angepasst :
In Personl.xls ein Klasssenmodul einfügen und per F4 umbenennen in AppEventClass
Darin folgenden Code eintragen:

Option Explicit
Public WithEvents xlApp As Excel.Application
Private Sub Class_Initialize()
Set xlApp = Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Workbook)
Application.VBE.ActiveVBProject.References.AddFromFile "fm20.dll"
End Sub

In "DieseArbeitsmappe" von personl.xls:

Private Sub Workbook_Open()
Set xlEvents.xlApp = Application
End Sub

In "Modul1" von Personl.xls:

Option Explicit
Public xlEvents As New AppEventClass

In allen geöffneteten Dateien wird nun automatisch beim Öffnen der Verweis auf "fm20.dll", also MS Forms 2.0 Object Library gesetzt.
Gruß
Reinhard
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Typ-Fehler bei Dim X as Dataobject in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Typ-Fehler "benutzerdefinierter Typ nicht definiert" in VBA zu beheben, gehe folgendermaßen vor:

  1. Öffne den Visual Basic for Applications-Editor (VBE):

    • Drücke ALT + F11 in Excel.
  2. Setze den Verweis auf die Microsoft Forms 2.0 Object Library:

    • Gehe zu Extras > Verweise.
    • Suche nach Microsoft Forms 2.0 Object Library in der Liste. Setze ein Häkchen davor und klicke auf OK.
  3. Verwende den richtigen Code:

    • Stelle sicher, dass dein Code wie folgt aussieht:
      Sub kopieren_test()
      Dim MyData As MSForms.DataObject ' Achte darauf, MSForms.DataObject zu verwenden
      Set MyData = New MSForms.DataObject
      MyData.SetText "Hello World"
      MyData.PutInClipboard
      End Sub
  4. Fehlerüberprüfung:

    • Führe den Code aus, um sicherzustellen, dass der Fehler nicht mehr auftritt.

Häufige Fehler und Lösungen

  • Fehler: "benutzerdefinierter typ nicht definiert"

    • Lösung: Stelle sicher, dass der Verweis auf die Microsoft Forms 2.0 Object Library gesetzt ist.
  • Fehler: "Typfehler" beim Ausführen des Codes

    • Lösung: Überprüfe, ob die richtige Syntax für die Dim-Anweisung verwendet wird, z.B. Dim MyData As MSForms.DataObject.

Alternative Methoden

Wenn du keine Microsoft Forms 2.0 Object Library verwenden möchtest, kannst du den Clipboard-Zugriff auch mit API-Funktionen oder anderen Methoden realisieren. Eine Möglichkeit ist, die DataObject-Klasse über eine andere Bibliothek zu implementieren oder eine eigene Klasse zu erstellen, die den Clipboard-Zugriff kapselt.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du Daten in die Zwischenablage kopierst:

Sub TextInZwischenablage()
    Dim MyData As MSForms.DataObject
    Set MyData = New MSForms.DataObject
    MyData.SetText "Dies ist ein Test."
    MyData.PutInClipboard
End Sub

Vergewissere dich, dass der Verweis auf die Microsoft Forms 2.0 Object Library gesetzt ist, um den DataObject erfolgreich zu verwenden.


Tipps für Profis

  • Verwende die Option Explicit Direktive: Dies zwingt dich, alle Variablen zu deklarieren, was Fehler minimiert.

  • Automatisierung bei Workbook-Öffnung: Du kannst den Verweis auf die Microsoft Forms 2.0 Object Library automatisch setzen, indem du einen Klassenmodul in personal.xls erstellst. Füge den entsprechenden Code im Workbook_Open()-Ereignis hinzu.

  • Dokumentation: Halte deine Makros und deren Abhängigkeiten gut dokumentiert, damit du den Überblick behältst, insbesondere wenn du mehrere Bibliotheken verwendest.


FAQ: Häufige Fragen

1. Warum läuft mein Code manchmal ohne die Dim-Anweisung?
Es könnte daran liegen, dass Excel im Hintergrund den Verweis automatisch gesetzt hat, nachdem du eine bestimmte Aktion ausgeführt hast, wie z.B. das Erstellen eines Steuerbuttons.

2. Wie setze ich den Verweis auf die Microsoft Forms 2.0 Object Library in allen neuen Arbeitsmappen?
Du kannst ein Klassenmodul in personal.xls erstellen, das beim Öffnen einer neuen Arbeitsmappe den Verweis automatisch setzt, wie im obigen Beispiel gezeigt.

3. Wo kann ich die Microsoft Forms 2.0 Object Library herunterladen?
In der Regel ist sie bereits in Excel integriert, aber du kannst versuchen, die Datei fm20.dll zu finden, um sie manuell zu registrieren.

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