Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Listbox in Zwischenablage kopieren
#1
Hello alle zusammen,

bin durch alle hier echt weit gekommen, jetzt stehe ich vor dem nächsten Problem. Ich habe in einer Listbox mehrere Spalten und würde diese gerne per Button in die Zwischenablage kopieren. Mit dem Code unten schaffe ich es nur eine Spalte zu kopieren. Insgesamt brauche ich 4 Spalten. Das Ganze habe ich so eingelesen:
Code:
'Einlesen in die Listbox!

Dim i As Long
Dim varListe As Variant
varListe = Worksheets("ADS").Range("A2").CurrentRegion.Value
With ADS.ListBox1

  .Clear
  .ColumnCount = UBound(varListe, 2) 'Gibt an Welche ?berschrift'
  .AddItem varListe(1, 1)
  .List(.ListCount - 1, 1) = varListe(1, 2)
  .List(.ListCount - 1, 2) = varListe(1, 3)
  .List(.ListCount - 1, 3) = varListe(1, 4)
  '.List(.ListCount - 1, 4) = varListe(1, 5)'
 
 
    For i = 2 To UBound(varListe, 2)
        .AddItem varListe(i, 1) 'Gibt an welche Datenreihe'
        .List(.ListCount - 1, 1) = varListe(i, 2)
        .List(.ListCount - 1, 2) = varListe(i, 3)
        .List(.ListCount - 1, 3) = varListe(i, 4)
     
     

    Next i
 
End With

Code:
'In Zwischenablage'

Private Sub CommandButton2_Click()

Dim strArray() As String, strText As String
   Dim lngIndex As Long
   Dim objClipboard As DataObject
   Set objClipboard = New DataObject
   With ListBox1
       ReDim strArray(1 To .ListCount)
       For lngIndex = 1 To .ListCount
           strArray(lngIndex) = .List(lngIndex - 1, 0)
           strArray(lngIndex) = .List(lngIndex - 1, 1)
       Next
   End With
   strText = Join(strArray, vbLf)
   With objClipboard
       .SetText strText
       .PutInClipboard
   End With
   Set objClipboard = Nothing

   
End Sub
Antworten Top
#2
Hallo,

Gegenfrage: was ist denn ein "DataObject"? Mein Excel kennt das nicht ...

An der Stelle ist der Code unsinnig


Code:
For lngIndex = 1 To .ListCount
           strArray(lngIndex) = .List(lngIndex - 1, 0)
           strArray(lngIndex) = .List(lngIndex - 1, 1)

Die letzte Zeile überschreibt die Zuweisung aus der vorletzten.
sowas wie
Code:
strArray(lngIndex) = .List(lngIndex - 1, 0) & ";" & .List(lngIndex - 1, 1)

ist hier tunlich


vg, MM
Antworten Top
#3
Und befüllen geht so:

Code:
ListBox1.List=sheets("ADS").Range("A2").CurrentRegion.Value

Warum die Zwischenanlage ?

Wo sollten die Daten geraten ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#4
(25.06.2019, 14:44)mmat schrieb: Gegenfrage: was ist denn ein "DataObject"? Mein Excel kennt das nicht ...

Guckst Du z.B.: Zugriff auf die Zwischenablage (Clipboard)

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • mmat
Antworten Top
#5
Beim Befüllen werden alle Einträge aus verschiedenen Zeilen genommen. So sollen die ja auch zwischengespeichert werden.
Antworten Top
#6
Hallo Deeage,

nochmal in anderen Worten: der von mir angemerkte Progammfehler in deinem Makro CommandButton2_Click() bewirkt, dass nur die letzte Spalte in der Zwischenablage ankommt.

vg, MM
Antworten Top
#7
Hallo MM,


ja simpel Smile .. Danke funktioniert jetzt alles super Smile 1000 Dank
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste