Herbers Excel-Forum - das Archiv

Zwischenablage leeren

Bild

Betrifft: Zwischenablage leeren
von: Boris
Geschrieben am: 01.10.2003 20:48:32
Hi Leute,

Wie kann ich per VBA die gesamte Zwischenablage leeren?
Reinpacken kann ich ja alles mit der "PutInClipboard-Methode" - aber wie kann ich das Clipboard wieder komplett leeren?

Grüße Boris

Bild

Betrifft: AW: Zwischenablage leeren
von: Panicman
Geschrieben am: 01.10.2003 20:55:40
Hallo Boris

schick doch einfach ein "" (NICHTS) in das Clipboard.
http://mypage.bluewin.ch/reprobst/WordFAQ/SetData.htm

Gruß
Holger
Bild

Betrifft: Ja - super! Und noch eine kleine Nachfrage:
von: Boris
Geschrieben am: 01.10.2003 21:05:19
Hi Holger,

das ist perfekt! Und somit hab ich jetzt auch die Geschichte mit der Gültigkeit wasserdicht (Du erinnerst dich? Killerbefehle Kopieren und ausschneiden?)

Werde jetzt immer diesen Code als Worksheet_Selection_Change einsetzen:



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim oData As DataObject
Set oData = New DataObject
oData.SetText ""
oData.PutInClipboard
End Sub



Stellt sich zum Schluss nur noch ein Frage:
Da ja der Verweis auf die "Microsoft Forms 2.0 Object Library" gesetzt sein muss:
Wie kann ich diesen Verweis beim Öffnen der Mappe automatisch setzen? Oder werden die aktivierten Verweise automatisch "mitgespeichert", so dass man sich das Aktivieren beim Öffnen sparen kann?

Grüße Boris
Bild

Betrifft: Ich und VBA *grinz*
von: Panicman
Geschrieben am: 01.10.2003 21:12:16
Hallo Boris,

du weißt doch, das ich kein VBA kann (nur mit Recorder)
das war nur logisches Überlegen.
keine Ahnung ob sich der Verweis automatisch setzt.
können wir ja ausprobieren. Schick mir doch die Datei.
Bei mir wird bis jetzt "Dim oData As DataObject" nicht anerkannt.

Gruß
Holger
Bild

Betrifft: Du hast Post oT
von: Boris
Geschrieben am: 01.10.2003 21:16:01
Bild

Betrifft: Das Funzt !!!!
von: Panicman
Geschrieben am: 01.10.2003 21:19:13
Hallo Boris

ich kann überhaupt nichts mehr in der Kopieren
Bessergesagt kopieren schon, aber sobald ich die Zelle verlasse ist es weg.

Gruß
Holger
Bild

Betrifft: Gültigkeit - Kopieren und Ausschneiden verhindern
von: Boris
Geschrieben am: 01.10.2003 21:27:24
Hi Holger, hi alle anderen,

hab dem Posting nochmal ne aussagefähige Überschrift verliehen - des Archives wegen.

Mein "Dauerproblem":
Ich arbeite gerne mit Daten-Gültigkeit. Zudem erstelle ich Mappen, die von vielen unerfahrenen Excel-Usern genutzt werden.
Der Tod einer jeden Gültigkeit sind bekanntlich die Befehle "Kopieren" und "Ausschneiden" - gerade von den sogenannten "DAUs" immerwieder gerne benutzt.
Also möchte ich dies grundsätzlich unterbinden.
Bisher hatte ich es immer mit



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode Then Application.CutCopyMode = False
End Sub



zum Großteil unterbunden. Hatte aber den Nachteil, dass z.B. aus der Bearbeitungsleiste heaus kopiert und die auch wieder eingefügt werden konnte.
Also suchte ich nach der Möglichkeit, die gesamte Zwischenablage zu leeren - auch im Selection_Change_Ereignis.

Und das funktioniert prächtig mit



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim oData As DataObject
Set oData = New DataObject
oData.SetText ""
oData.PutInClipboard
End Sub



Es muss dazu der Verweis auf die "Microsoft Forms 2.0 Object Library" gesetzt werden.
Und zum Schluss haben wir jetzt festgestellt, dass die Verweise mitgespeichert werden - somit kann man die erstellte Mappe allen zur Verfügung stellen, ohne dass noch manuell irgendwelche Verweise gesetzt werden müssen.

Grüße Boris
Bild

Betrifft: AW: Gültigkeit - Kopieren und Ausschneiden verhindern
von: Franz W.
Geschrieben am: 02.10.2003 08:44:33
Hi Boris,

klingt interessant. Danke für die nochmalige Zusammenfassung hier oben - jetzt hab sogar ich kapiert, worum's genau geht :-))).

Aber eine Frage hätte ich noch:

"Es muss dazu der Verweis auf die "Microsoft Forms 2.0 Object Library" gesetzt werden."
Wie geht das bitte? Kann ich da bitte noch einen Tipp bekommen?

Danke schon mal und Grüße
Franz
Bild

Betrifft: AW: Gültigkeit - Kopieren und Ausschneiden verhindern
von: Boris
Geschrieben am: 02.10.2003 09:08:09
Hi Franz,

im VBA-Editor findest du unter dem Menuüpunkt "Extras" auch "Verweise" - dort musst du dann den Haken vor die Bibliothek setzen.

Grüße Boris
Bild

Betrifft: AW: Gültigkeit - Kopieren und Ausschneiden verhindern
von: Franz W.
Geschrieben am: 02.10.2003 13:44:00
Hi Boris,

sorry, hab keine Mail-Nachricht bekommen und hab erst jetzt Deine Antwort gesehen. Vielen Dank dafür. Aber gibt' das erst ab xl10.0? Oder bin ich zu dusslig, die Verweise in meinem xl9.0 zu finden?

Grüße
Franz
Bild

Betrifft: Gibt´s auch bei xl97
von: Boris
Geschrieben am: 02.10.2003 14:40:29
Hi Franz,

im VBA-EDITOR unter Extras gibt´s auch VERWEISE...
Ansonsten hat sie dir jemand geklaut...;-))

Grüße Boris
Bild

Betrifft: Nicht geklaut ....... *schäm*
von: Franz W.
Geschrieben am: 02.10.2003 15:12:47
Hi Boris,

nicht geklaut, nur ich viel Trottel, hab in Excel gesucht statt in VBA!!!!!! Und der entsprchende Verweis war sogar gesetzt (nicht von mir, sondern wohl von der Installation :-))).

Aber trotzdem krieg ich jetzt noch bei dem Code von Dir eine Fehlermeldung:

"Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert."
Und markiert ist in der DIM-Zeile: " oData As DataObject "

Hab ich noch nie gehört. Wo muss ich denn da jetzt noch was definieren.

Grüße
Franz
Bild

Betrifft: Doch geklaut!!
von: Franz W.
Geschrieben am: 02.10.2003 15:19:25
Hi Boris,

hab grade den Verweis gefunden, hab dazu in einer von mir bereits geöffneten Mappe nach dem Verweis gesucht. Jetzt habe ich eine neue Mappe aufgemacht, um Deinen code zu testen, und da war der Verweis plötzlich nicht gesetzt. Und die entspr. Library was an ganz anderer stelle. Hab ich jetzt auch angekreuzt, und jetzt gibts keine Fehlermeldung mehr.

Wodurch wird dieser Verweis denn gesetzt? Wenn er mal da ist und mal nicht? Ich habe ihn auf jeden Fall noch nie gesetzt, bei meiner vorigen Mappe war er aber da.

Kann ich da ein bisschen Hintergrundinfo kriegen, bitte?

Danke schon mal und Grüße
Franz
Bild

Betrifft: Hintergrundinfo - muss ich leider passen...
von: Boris
Geschrieben am: 03.10.2003 16:49:33
Hi Franz,

ich kenn mich mit so nem Zeugs nun überhaupt nicht aus, wieso, weshalb und warum Verweise da sind, dann wieder nicht, warum sie eigentlich nicht von vornherein einfach alle gesetzt sind etc. etc..

Da müssen mal die Cracks wie K.Rola oder Ramses etc... antworten - nur werden die hier nicht mehr vorbeischauen...;-))

Starte einfach einen neuen Thread.

Grüße Boris
Bild

Betrifft: Ok, mach ich. Trotzdem vielen Dank!! o.T.
von: Franz W.
Geschrieben am: 03.10.2003 17:04:58
Bild

Betrifft: AW: Ja - super! Und noch eine kleine Nachfrage:
von: PeterW
Geschrieben am: 01.10.2003 21:16:58
Hallo Boris,

kenne das Problem zwar nicht aber vielleicht solltest du Workbook_SheetSelectionChange (DieseArbeitsmappe) benutzen.

Gruß
Peter
Bild

Betrifft: Konntest du auch nicht kennen...
von: Boris
Geschrieben am: 01.10.2003 21:28:19
Hi Peter,

...danke auch Dir - ich hab der Antwort von Holger ne ausführliche Beschreibung angehängt.

Grüße Boris
Bild

Betrifft: AW: Konntest du auch nicht kennen...
von: PeterW
Geschrieben am: 01.10.2003 21:46:15
Hallo Boris,

aus einer anderen Tabelle lässt sich aber ohne Probleme noch etwas einfügen und damit die Gültigkeit umgehen.

Gruß
Peter
Bild

Betrifft: Ja, da hast du Recht, aber...
von: Boris
Geschrieben am: 01.10.2003 22:45:41
Hi Peter,

...hättest du auch ein Lösung für diese "Lücke"? Das übersteigt meine VBA-Kenntnisse denn nun deutlich...

Grüße Boris
Bild

Betrifft: AW: Ja, da hast du Recht, aber...
von: PeterW
Geschrieben am: 01.10.2003 22:52:14
Hallo Boris

bin ja nun auch nicht der VBA-Fachmann aber ich würde den gleichen Code noch einmal in das Workbook_SheetActivate-Ereignis (DieseArbeitsmappe) schreiben.

Gruß
Peter
Bild

Betrifft: Gute Idee - funktioniert aber leider nicht...
von: Boris
Geschrieben am: 01.10.2003 23:00:37
Hi Peter,

danke für deinen Hinweis - aber leider greift das Ereignis nicht, wenn mehrere Applikationen geöffnet sind.
Allerdings glaube ich auch, das´s meine "DAUs" nicht die ganz harten DAUs sind, um auf solche Ideen zu kommen...;-))

Grüße Boris
Bild

Betrifft: AW: Gute Idee - funktioniert aber leider nicht...
von: PeterW
Geschrieben am: 01.10.2003 23:12:53
Hallo Boris,

bis eine bessere Lösung kommt biete ich an, den Code auch noch in Workbook_Activate zu schreiben.

Wie D deine DAUs sind lasse ich mal offen.

Gruß
Peter
Bild

Betrifft: AW: Gute Idee - funktioniert aber leider nicht...
von: K.Rola
Geschrieben am: 01.10.2003 23:19:41
Hallo,

simulier doch in Worksheet_Activate ein Selection_Change für den Fall,
dass Zellen mit Gültigkeit vorhanden sind.
Noch ne Falle, du musst die Datenmaske wegbeamen, weil die die
Gültigkeit auch aushebelt.
Insgesamt vielleicht besser, die Eingaben gleich über einen Dialog
zu machen.

Gruß K.Rola
Bild

Betrifft: AW: Zwischenablage leeren
von: Reinhard
Geschrieben am: 01.10.2003 20:57:04
Hallo Boris,
nimm
Application.CutCopyMode = false
Gruß
Reinhard
Bild

Betrifft: Danke auch Dir - das hat einen kleinen Haken:
von: Boris
Geschrieben am: 01.10.2003 21:07:09
Hi Reinhard,

...so habe ich es bisher auch immer gemacht - allerdings lässt sich dann immer noch alles aus der Bearbeitungsleiste herauskopieren, denn das wird von Application.CutCopyMode nicht erfasst.

Grüße Boris
 Bild
Excel-Beispiele zum Thema " Zwischenablage leeren"
Gefilterte Daten ohne Zwischenablage übertragen Variable in Zwischenablage übernehmen
Werte aus UserForm-ListBox in die Zwischenablage übernehmen Prüfung, ob die Zwischenablage leer ist
Auslesen der aktuell in der Zwischenablage vorhandenen Formate Wert in Zwischenablage suchen
Alle nichtleeren Zeilen markieren Zeilen mit leeren Formeln beim Druck unterdrücken
Füllen aller leeren Zellen mit einem Platzhalter Alle leeren Spalten ausblenden