Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zwischenablage löschen


Betrifft: Zwischenablage löschen von: Jürgen
Geschrieben am: 18.09.2017 19:31:37

Hallo,

bin fast am Verzweifeln,
bin schon seit 2 Tagen am Suchen bei Google..

Ich habe ein Workbook mit 4 Tabellen
Ich kopiere von Tabelle1 zu Tabelle2 einige Werte mit:

Worksheets("Tabelle1").Range("M5:O44").Copy
Worksheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

zum Schluss will ich nur folgendes kopieren:

z = Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & z).Copy

Diese Daten will ich weiter verwenden.

Wenn ich diese Daten in eine Excel Spalte einfüge ist alles ok,
es wird nur die Spalte C eingefügt.
Wenn ich aber die Werte aus dem Zwischenspeicher in eine Word-Datei einfüge
sind da immer noch die 3 Spalten M5:O44 vorhanden...

Wie es aussieht klappt es bei Excel 2016 und bei Excel 2013 nicht, das muss ich aber noch genauer testen...

Allerdings, wenn ich den Zwischenspeicher-Inhalt anzeigen lasse, ist dieser immer gefüllt, ich bekomme ihn einfach nicht gelöscht...

Manuell natürlich ja, es soll aber in einem Makro geschehen...

Routinen wie z.B.

Sub leer()

Dim za_daten As New DataObject

za_daten.GetFromClipboard
za_daten.SetText ""
za_daten.PutInClipboard


End Sub

habe ich alles schon getestet, geht einfach nicht....

Weis jemand einen Rat?

Vielen Dank, Jürgen

  

Betrifft: AW: Zwischenablage löschen von: Mullit
Geschrieben am: 18.09.2017 22:37:11

Hallo,

am elegantesten per Api...

Option Explicit

Private Declare Function OpenClipboard Lib "user32.dll" ( _
    ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long

Public Sub test()
    Call OpenClipboard(0&)
    Call EmptyClipboard
    Call CloseClipboard
End Sub




VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit


  

Betrifft: AW: Zwischenablage löschen von: Jürgen
Geschrieben am: 19.09.2017 07:04:18

Hallo,
Danke für die schnelle Antwort.
Diese Funktion hatte ich auch schon mal irgendwo gesehen und versucht zu testen.
Da gab es aber eine Fehlermeldung und ich hatte es nicht weiter verfolgt.
Nun habe ich nochmals versucht den Fehler zu beheben.
Nachdem was ich gefunden hatte muss man zwischen Declare und Function - PtrSafe schreiben.
Dan wird kein Fehler beim Ausführen angezeigt.
Nur leider befinden sich immer noch die 3 Spalten in dem Zwischenspeicher.
Um meine selektierten Zellen bewegt sich die "Strichel-Linie"

Was kann ich noch tun?
Gruß Jürgen


  

Betrifft: AW: Zwischenablage löschen von: Werner
Geschrieben am: 19.09.2017 07:43:21

Hallo Jürgen,

kann ich nicht nachvollziehen, hab im Moment aber auch nur Excel 2010 zu Verfügung. Damit klappt es mit dem Code. Beim Einfügen der Zwischenablage in ein Word-Dokument wird nur die Spalte C eingefügt.

Hier hast du allerdings nicht sauber referenziert:

Z = Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy
Ist es tatsächlich gewünscht, die letzte Zeile im aktiven Blatt zu ermitteln und damit dann einen Bereich aus Blatt 2 zu kopieren? Wenn nein, dann solltest du beim Ermitteln der letzten Zeile auch auf das Blatt 2 referenzieren.
Z = Worksheets("Tabelle2").Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy
Das hat aber nichts mit deinem eigentlichen Problem zu tun.

Gruß Werner


  

Betrifft: AW: Zwischenablage löschen von: Jürgen
Geschrieben am: 19.09.2017 08:18:01

Hallo, Werner,
danke für den Hinweis.
Ja, so wie Du es aufgezeigt hast, ist es sauberer...

übrigens, bei Office 2016 was ich noch nutze, tritt dieser Fehler nicht so auf.
Da wird zwar auch die Zwischenablage nicht gelöscht, aber es wird auch nur die Spalte
C, so wie gewünscht, eingefügt.

Wie oben schon geschrieben, soll es aber bei Office 2013 funktionieren.

Gruß Jürgen


  

Betrifft: AW: Zwischenablage löschen von: Jürgen
Geschrieben am: 19.09.2017 12:08:53

Hallo,
habe noch etwas getestet...

Ich habe dabei die Zwischenablage unter START geöffnet,
wenn ich diese leere und mein Makro laufen lasse dann sehe ich einmal die
3 Spalten aus der Tabelle.

nach:

Z = Worksheets("Tabelle2").Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy

sind immer noch die 3 Spalten zu sehen.

Wenn ich aber vor:
Z = Worksheets("Tabelle2").Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy

dies hier:

MsgBox HoleTextVonZwischenablage

einfüge, dann:

bleiben die 3 Spalten zwar in der Zwischenablage zu sehen aber davor steht dann
der zuletzt ausgewählte Bereich aus Spalte C
Wenn ich daraufhin die Zwischenablage in z.B. WORD einfüge steht dann auch nur die
gewünschte Spalte C mit den jeweiligen Werten. So geht es also,
jetzt muss ich nur noch die Sache mit der msgBox umgehen...

Übrigens, nach nochmaligen Aufruf des Makro werden die Werte in der Zwischenablage auch nicht
mehr, wird diese vielleicht vor dem Start immer gelöscht? Irgendwie...?

Gruß Jürgen


  

Betrifft: AW: Zwischenablage löschen von: Mullit
Geschrieben am: 19.09.2017 12:02:55

Hallo,

Nachdem was ich gefunden hatte muss man zwischen Declare und Function - PtrSafe schreiben.

dann wirst Du eine 64Bit Office-Version haben,... nix gut....

http://www.online-excel.de/excel/singsel.php?f=186

Gruß, Mullit


Beiträge aus den Excel-Beispielen zum Thema "Zwischenablage löschen"