Hallo Zusammen,
ich würde mir das Leben auf der Arbeit gerne erleichtern bis wir unsere Software erhalten um Angebote und Rechnung zu stellen. Bin absolute VBA-Anfänger...
Aktuell geschieht das über ein Excel Sheet.
Ich habe nun in einer Datei mehrere Blätte: Produktliste, Angebotslayout... ( die weiteren interessieren nicht.)
Ich habe eine Userform mit 3 Listboxen die gefüllt werden mit den Zeilen aus der Tabelle "Produktliste". Das funktioniert auch. Jetzt soll über einen CommandButton ausgewälte Produkte in der Listbox in das Angebotslayout kopiert werden. Startzelle ist B19. Ich habe jetzt einige Tage gegoogled aber keine passende Lösung gefunden. entweder wird nur die erste Spalte der Auswahl übergeben oder aber gar nichts.
Bräuchte wirklich Hilfe! Vielen Dank schon mal vorab!
Option Explicit
Private Sub UserForm_Activate()
Me.ListBox1.List = Tabelle1.Range("B2:F3").Value
Dim avntValues As Variant
Dim ialngIndex As Long
With Tabelle1
avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
End With
ListBox1.ListStyle = fmListStyleOption
ListBox1.MultiSelect = fmMultiSelectMulti
Me.ListBox2.List = Tabelle1.Range("B4:F15").Value
Dim avntValues2 As Variant
Dim ialngIndex2 As Long
With Tabelle1
avntValues2 = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
End With
ListBox2.ListStyle = fmListStyleOption
ListBox2.MultiSelect = fmMultiSelectMulti
Me.ListBox3.List = Tabelle1.Range("B16:F25").Value
Dim avntValues3 As Variant
Dim ialngIndex3 As Long
With Tabelle1
avntValues3 = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
End With
ListBox3.ListStyle = fmListStyleOption
ListBox3.MultiSelect = fmMultiSelectMulti
End Sub
Private Sub CommandButton1_Click()
ListBoxAuswahl ListBox1, _
ThisWorkbook("Neues_Angebot").Worksheets("Tabelle1").Range("B19")
End Sub
Private Sub ListBoxAuswahl(DieListbox As MSForms.Listbox, _
StartZelle As Range)
Dim vX() As Variant, i As Long, z As Long, k As Integer
' Anzahl der selektierten Zeilen, dürfte schneller as Redim Konstrukte sein
With DieListbox
For i = 0 To .ListCount - 1
If .Selected(i) Then z = z + 1
Next i
If z = 0 Then Exit Sub ' Wenn nichts selektiert
ReDim vX(1 To z, 1 To .ColumnCount) 'Feld dimensionieren
z = 0
For i = 0 To .ListCount - 1 ' Ins Feld schreiben
If .Selected(i) Then
z = z + 1
For k = 0 To .ColumnCount - 1
vX(z, k + 1) = .List(i, k)
Next k
End If
Next i
End With
' Und jetzt raus damit
With StartZelle
Range(.Parent.Cells(StartZelle.row, StartZelle.Column), _
.Parent.Cells(StartZelle.row + z - 1, _
StartZelle.Column + DieListbox.ColumnCount - 1)).Value = vX
End With
End Sub
|