Wie kann ich Copy und Paste des Users abfangen und durch meinen eigenen Makrocode bereichern? Hab keinen passenden Event gefunden.
Danke für alle sachdienlichen Hinweise.
Wie kann ich Copy und Paste des Users abfangen und durch meinen eigenen Makrocode bereichern? Hab keinen passenden Event gefunden.
Danke für alle sachdienlichen Hinweise.
Nein, ich will kein Drag & Drop deaktivieren. Ich will beim Copy den Range als Object zwischenspeichern, damit es nicht schon vor dem Paste irgendwo im Nirwana verlorengeht, so wie es gerne mal bei Excel passiert und ganz besonders in einem ganz speziellen Fall, der für unsere User ziemlich nervig ist.
Dieses Objekt will ich dann beim Paste einbasteln.
Hört sich vielleicht wüst an, ist auch erstmal ins Unreine gedacht, aber ich hoffe es läßt sich irgendwie regeln.
Greetinx
Maria
Eine andere Idee, die ich einmal für einen Teilbereich("Plan")eines Tabellenblattes verwirklicht habe: der Anwender doppelklickt auf die Zelle die er kopieren möchte und beim nächsten klick im zulässigen Bereich des "Plans" wird der Wert eingefügt. (Wenn Auswahlbereich und Zielbereich immer gleich groß sind, läßt sich der Kopiervorgang auch auf mehere Zellen gleichzeitig per Makro erweitern).
Public cFlag As Boolean, vntZwiWert, objZwiAdr As Range
Sub Worksheet_SelectionChange(ByVal Target As Range)
If cFlag = False Then Exit Sub
If Not Intersect(Range("Plan"), Target) Is Nothing Then
cFlag = False
Target.Value = vntZwiWert
End If
End Sub
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("Plan"), Target) Is Nothing Then
cFlag = True 'Spezialkpiermodus
Cancel = True 'keine Zellbearbeitung nach Doppelklick
Set objZwiAdr = Target
vntZwiWert = objZwiAdr.Value
End If
End Sub
Vielleicht beschreibst du auch nochmal genau, wo und wie bei den Anwendern etwas beim Kopieren verloren geht.
Gruss Anugyan
Ich habe es hier reproduzieren können, und das Problem ist ja auch bekannt, weil Excel die Zwischenablage ja anders nutzt als andere Programme.
Ich will halt daß der User so wenig wie möglich von eventuellen Basteleien an der Copy-and-Paste-Funktionalität mitkriegt, d.h. daß sich die Lösung vom look-and-feel nicht weiter von Excel unterscheidet.
Ich habe jetzt erst einmal mit OnKey die Shortcuts abgefangen, mit dem Rest bastel ich noch.
Deinen Tip mit dem
Sub Worksheet_SelectionChange
If Application.CutCopyMode = True Then ...
fand ich einen klasse Ansatz - nur funzt es nicht. Die Tastatur-Shortcuts hab ich mittlerweile per OnKey abgefangen, mit Iconleiste und Menu wird es schwieriger, weil es auf unterschiedlichsprachigen Excel-Versionen laufen soll.
Da wäre mir Deine Variante sehr entgegengekommen.
Objekt kopieren und pastieren geht BTW so wie ich mir das vorgestellt hatte.
If Not Application.CutCopyMode = False Then ...
heißen; da CutCopyMode laut VBA-Hilfe nur den Wert False, xlCut oder xlCopy annehmen kann.
Du hast immer noch nicht genau erklärt, warum beim Wechsel in die andere Datei nach dem Kopieren der Wert verloren geht(hast du schon versucht dies im Einzelschrittmodus herauszufinden?).
Gruss Anugyan
Das mit dem not false habe ich auch schon probiert, funktioniert irgendwie leider auch nicht. Ich fange jetzt halt alle Shortcuts und Menu/Icon-Aktionen ab.
Läuft so weit schon ganz gut, der Feinschliff fehlt noch.