Microsoft Excel

Herbers Excel/VBA-Archiv

Zwischenablage leeren

    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

      


    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


      


    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


      


    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


      


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




      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


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




      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    Betrifft: AW: Zwischenablage leeren von: Reinhard
    Geschrieben am: 01.10.2003 20:57:04

    Hallo Boris,
    nimm
    Application.CutCopyMode = false
    Gruß
    Reinhard


      


    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


     

    Beiträge aus den Excel-Beispielen zum Thema " Zwischenablage leeren"