Thema Datum  Von Nutzer Rating
Antwort
Rot Multiselect Listbox mit mehreren Spalten an Tabelle übergeben
06.01.2022 17:35:41 domi2332
NotSolved
06.01.2022 17:59:30 Gast99344
***
NotSolved
06.01.2022 19:02:44 domi2332
NotSolved
06.01.2022 20:02:42 Gast99344
NotSolved
07.01.2022 15:30:15 Gast31772
NotSolved

Ansicht des Beitrags:
Von:
domi2332
Datum:
06.01.2022 17:35:41
Views:
83
Rating: Antwort:
  Ja
Thema:
Multiselect Listbox mit mehreren Spalten an Tabelle übergeben
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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Multiselect Listbox mit mehreren Spalten an Tabelle übergeben
06.01.2022 17:35:41 domi2332
NotSolved
06.01.2022 17:59:30 Gast99344
***
NotSolved
06.01.2022 19:02:44 domi2332
NotSolved
06.01.2022 20:02:42 Gast99344
NotSolved
07.01.2022 15:30:15 Gast31772
NotSolved