25.06.2019, 12:01
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:
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