Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
484to488
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
484to488
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige