Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1076to1080
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Übergehen: Laufzeitfehler '-2147221404(80040064)'

Übergehen: Laufzeitfehler '-2147221404(80040064)'
25.05.2009 19:29:35
Lenni
Moin Excellianer!
Mit folgendem Code für ein UserForm wurde mir hier im Forum vor einigen Wochen geholfen. Es handelt sich um die Möglichkeit, dass bei Click auf CommandButton5 der zuvor "befüllte" Zwischenspeicher des Rechners in eine TextBox2 geschrieben wird.

Private Sub CommandButton5_Click()
Dim objDataObject As DataObject
Set objDataObject = New DataObject
objDataObject.GetFromClipboard
TextBox2.Text = objDataObject.GetText
Set objDataObject = Nothing

Das klappt soweit auch super gut... ...nur wie sich jetzt erst herausgestellt hat, wird mir bei einem leerem Zwischenspeicher folgende Fehlermeldung angezeigt: Laufzeitfehler '-2147221404(80040064)': DataObject:GetText Ungültige FORMATECT-Struktur
Gibt es eine Möglichkeit, eine Prüfung in den Code "einzubauen", dass z.B. eine MsgBox geöffnet wird mit dem Hinweis, dass der Zwischspeicher leer ist, bevor diese Fehlermeldung kommt (...die dann natürlich auch nicht mehr erscheinen soll!)?
Oder was mir auch schon reichen würde: Diese Fehlermeldung ignorieren bzw. zu übergehen und gleich den Cursor in die TextBox2 setzen (...dann zum manuellen befüllen!).
Ich bitte um Eure Hilfe! Vielen Dank!
Viele Grüße aus dem hohen Norden!
Lenni

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Übergehen: Laufzeitfehler '-2147221404(80040064)'
25.05.2009 21:27:04
Nepumuk
Hallo Lenni,
versuch es mal so:
Option Explicit

Private Const CF_TEXT As Long = 1

Private Sub CommandButton5_Click()
    Dim objDataObject As DataObject
    Set objDataObject = New DataObject
    objDataObject.GetFromClipboard
    If objDataObject.GetFormat(CF_TEXT) Then TextBox2.Text = objDataObject.GetText
    Set objDataObject = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Übergehen: Laufzeitfehler '-2147221404(80040064)'
25.05.2009 21:27:43
dan
Hallo Lenni,
man kann Fehler abfangen, z.B. mit On Error GoTo.
In diesem Fall wenn man die Methode GetText des Data-Objektes ruft und der Data-Object beinhaltet keine Text-Data, dann kommt es zu dem Error -2147221404.
Fuer diese Methode wuerde ich eine Wrapper-Funktion benutzen. In dem Wrapper wird der Error abgefangen und behabdelt.
Mein Vorschlag sieht so aus:
Option Explicit

Private Sub CommandButton5_Click()
Dim objDataObject As DataObject
Set objDataObject = New DataObject
objDataObject.GetFromClipboard
' statt TextBox2.Text = objDataObject.GetText wird die wrapper-funktion gerufen:
TextBox2.Text = GetDataObjectText(objDataObject)
Set objDataObject = Nothing
End Sub



Private Function GetDataObjectText(ByRef io_DataObject As DataObject) As String
On Error GoTo Err_GetDataObjectText
GetDataObjectText = io_DataObject.GetText
Exit Function
Err_GetDataObjectText:
If (Err.Number = -2147221404) Then
' no information in the text-format in the clip board:
VBA.MsgBox "Kein Text in Zwischspeicher.", vbInformation, "Data-Object"
Else
VBA.MsgBox Err.Description, vbCritical, "Error in Function GetDataObjectText"
End If
End Function


Gruss dan, cz.

Anzeige
Vielen Dank Euch Zwei'en!!
25.05.2009 22:30:37
Lenni
Danke Nepumuk und Dan!!
Deinen Vorschlag, Nepumuk, habe ich mal kurz umgesetzt und er funktioniert!! Vielen Dank Nepumuk!
Deinen Vorschlag, Dan, werde ich mir morgen noch mal in Ruhe ansehen >> ...scheint auch ein sehr interessanter Ansatz zu sein. Auf alle Fälle gefällt mir die Möglichkeit mit der MsgBox.
Ich melde mich morgen noch mal!! Aber schon mal vielen Dank für Eure Hilfe!!
Gruß
Lenni

...ich wollte mich ja noch mal melden!!
26.05.2009 09:15:23
Lenni
....ob Deine Lösung Dan, auch funktioniert: Jooo! Sie läuft genau so perfekt wie Nepumuks Lösung!
Vielen Dank Dan!!
Gruß
Lenni

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige