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

Forumthread: Strg + v vor Textbox-Change-Ereignis abfangen

Strg + v vor Textbox-Change-Ereignis abfangen
15.09.2004 09:23:07
Lupus
Hallo Excel-User,
mit der Tastenkombination Strg + v füge ich den Inhalt des Zwischenspeichers in eine Userform-Textbox ein.
Mit welchem Ereignis kann ich den einzufügenden Inhalt bearbeiten bevor das Textbox-Change-Ereignis ausgeführt wird?
Mit TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) kann ich zum Beispiel die Tastaturanschläge vor der Change-Ereignis verändern.
Gibt es da ein ähnliches Ereignis für Strg + v (paste) ?
Gruß Lupus
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Strg + v vor Textbox-Change-Ereignis abfangen
15.09.2004 18:55:13
Axel
Hallo,
das Ereignis Textbox_BeforeDropOrPaste() wird ausgelöst, bevor die Zwischenablage eingefügt wird.
Über einen Umweg über das DataObject(Bestandteil der MSForms-Bibliothek) kann die Zwischenablage ausgelesen werden.
Das untenstehende Beispiel verdeutlicht dies.
Schau dir in der Hilfe die Parameter zum Event an. Darüber kann die gesamte Operation auch gecancelt werden. Auch das DataObject ist in der Hilfe beschrieben.
Gruß
Axel


Private Sub TextBox1_BeforeDropOrPaste( _
   ByVal Cancel As MSForms.ReturnBoolean, _
   ByVal Action As MSForms.fmAction, _
   ByVal Data As MSForms.DataObject, _
   ByVal As SingleByVal As Single, _
   ByVal Effect As MSForms.ReturnEffect, _
   ByVal Shift As Integer)
   Dim dataobj As New DataObject
   
   ' Zwischenablage in das DataObject übernehmen
   dataobj.GetFromClipboard
   
   ' Zwischenablage auslesen, hier einfache Ausgabe ins Direktfenster
   Debug.Print dataobj.GetText(1)
End Sub


Anzeige
AW: Strg + v vor Textbox-Change-Ereignis abfangen
Lupus
Hallo Axel,
danke, hilft mir schon weiter, habe aber noch folgendes Problem.
Der unten aufgeführte Code soll bewirken, daß ich den Inhalt aus der Zwischenablage in Textbox1 einfüge. Hierbei möchte ich jedoch den Inhalt bevor er in die Textbox1 eingefügt wird, per Code aufarbeiten und erst dann in Textbox1 einfügen (siehe Beispielcode).
Nach Drücken der Tastenkombination Strg + v wird der Inhalt der Zwischenablage doppelt in die Textbox1 eingefügt. Wie kann man das umgehen? Es soll nur der von mir bearbeitete Inhalte der Zwischenablage eingefügt werden.
Wie müßte man den Code verändern, wenn ich den Inhalt von Textbox2 per drag and drop in Textbox1 einfüge? Wird das überhaupt mit dem BeforeDropOrPaste-Ereignis gesteuert?

Private Sub TextBox1_BeforeDropOrPaste( _
ByVal Cancel As MSForms.ReturnBoolean, _
ByVal Action As MSForms.fmAction, _
ByVal Data As MSForms.DataObject, _
ByVal X As Single, ByVal Y As Single, _
ByVal Effect As MSForms.ReturnEffect, _
ByVal Shift As Integer)
Dim strString As String
Dim dataobj As New DataObject
dataobj.GetFromClipboard
'Beispielcode
strString = dataobj.GetText(1)
strString = UCase(strString)
TextBox1 = strString
End Sub

Beispielmappe: https://www.herber.de/bbs/user/10951.xls
Gruß Lupus
Anzeige
AW: Strg + v vor Textbox-Change-Ereignis abfangen
16.09.2004 15:57:05
Axel
Hallo,
probiere es mal so:
Gruß
Axel


Private Sub TextBox1_BeforeDropOrPaste( _
   ByVal Cancel As MSForms.ReturnBoolean, _
   ByVal Action As MSForms.fmAction, _
   ByVal Data As MSForms.DataObject, _
   ByVal As SingleByVal As Single, _
   ByVal Effect As MSForms.ReturnEffect, _
   ByVal Shift As Integer)
   Dim strCB As String
   Dim dataobj As New DataObject
   
   ' Zwischenablage in das DataObject übernehmen
   dataobj.GetFromClipboard
   
   ' Zwischenablage auslesen, Fehler (wenn Zwischenablage leer) ignorieren
   On Error Resume Next
   strCB = dataobj.GetText(1)
   On Error GoTo 0
   
   If (Len(strCB)) Then
      ' Inhalt der Zwischenablage in Großschrift konvertieren und der Textbox zuweisen
      TextBox1.Value = UCase(strCB)
      
      ' Ursprungsbehandlung canceln
      Cancel = True
   End If
   
End Sub


Anzeige
AW: "Cancel = True" that's it
Lupus
Hallo Axel,
vielen Dank!!!
Der Zauber Code lautet "Cancel = True".
Gruß Lupus
;

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

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