Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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
Inhaltsverzeichnis

Zellwert statt Inhalt in Zwischenablage

Zellwert statt Inhalt in Zwischenablage
07.11.2023 11:08:36
Uwe
Mit dieser Anweisung bekomme ich den Inhalt der Zelle in die Zwischenablage. Wie muss ich den Befehl ändern, um den Wert zu bekommen?
Private Sub Schaltfläche26_Klicken()
Worksheets("Tabellen").Range("Q1").Copy
End Sub
Uwe

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellwert statt Inhalt in Zwischenablage
07.11.2023 11:21:29
volti
Hallo Uwe,

hier eine Idee dazu...
Private Sub Schaltfläche26_Klicken()

Dim MyData As DataObject

Set MyData = New DataObject
MyData.SetText Worksheets("Tabellen").Range("Q1").Text
MyData.PutInClipboard
End Sub


Gruß Karl-Heinz
AW: Zellwert statt Inhalt in Zwischenablage
07.11.2023 11:52:01
Uwe
Danke Karl Heinz
Es funktioniert, wie gewünscht.
Gruß
Uwe
AW: Zellwert statt Inhalt in Zwischenablage
07.11.2023 11:23:15
MCO
Hallo Uwe,

ich kann es nicht 100%ig sagen, aber ich vermute, dass immer alles kopiert wird und beim Einfügen kannst du bestimmen ob du WERT, FORMAT, FROMEL etc. einfügen möchtest.

Gruß, MCO
Anzeige
AW: Zellwert statt Inhalt in Zwischenablage
07.11.2023 11:44:25
volti
Hallo MCO,

Excel kopiert, wie andere Apps auch, mehrere Formate in die Zwischenablage. Kann man bei Bedarf nach einer Kopie über die API EnumClipboardFormats ermitteln.

Aus diesen bereitgestellten verschiedenen Formaten kann der User dann z.B. nur die Textversion einfügen, wie Du schon angeführt hast.

Man kann aber auch nur Text kopieren, neben der eben gezeigten Version hier noch eine API-Version. Allerdings kann hier im vorliegenden Fall nur der Inhalt einer Zelle und keine Range kopiert werden.

Code:


Private Declare PtrSafe Function GlobalAlloc Lib "kernel32" ( _ ByVal wFlags As Long, ByVal dwBytes As LongPtr) As LongPtr Private Declare PtrSafe Function GlobalLock Lib "kernel32" ( _ ByVal hMem As LongPtr) As LongPtr Private Declare PtrSafe Function GlobalUnlock Lib "kernel32" ( _ ByVal hMem As LongPtr) As Long Private Declare PtrSafe Function lstrcpy Lib "kernel32" ( _ ByVal lpString1 As Any, ByVal lpString2 As Any) As LongPtr Private Declare PtrSafe Function OpenClipboard Lib "user32" ( _ ByVal hWnd As LongPtr) As Long Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long Private Declare PtrSafe Function SetClipboardData Lib "user32" ( _ ByVal wFormat As Long, ByVal hMem As LongPtr) As LongPtr Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long Sub KopiereTextInZwischenablageAPI() ' Kopieren von Text über die API Dim hMem As LongPtr, lpGMem As LongPtr, sCliptext As String sCliptext = ActiveCell.Value hMem = GlobalAlloc(&H42, Len(sCliptext) + 1) lpGMem = GlobalLock(hMem) lpGMem = lstrcpy(lpGMem, sCliptext) If GlobalUnlock(hMem) = 0 Then If OpenClipboard(0&) <> 0 Then EmptyClipboard SetClipboardData 1, hMem ' 1=CF_TEXT CloseClipboard End If End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige