Multiselect Listbox Werte in Tabelle schreiben
#1
Hallo!

Ich habe ein Userform mit einer Listbox, einem Textfeld und einem CommandButton. 
Zuerst klicke ich auf den CommandButton "Userform öffnen" und klicke anschließend auf das Fernglassymbol um die Listbox mit Einträgen aus Tabelle1 zu füllen. Dann wähle ich einen Eintrag in der Listbox aus. Anschließend gebe ich einen Text in die Textbox ein und diesen Text übertrage ich mit einem klick auf den CommandButton "Update" in Tabelle1. In Spalte 0 der Listbox steht die Nummer des jeweiligen Eintrags aus Tabelle1 / Spalte A. Diese Nummer Verwende ich um den Eintrag der Textbox an der richtigen Stelle innerhalb der Tabelle zu platzieren.  Abschließend wird dieser neue Wert wieder zurück in die Listbox gegeben. Soweit funktioniert das auch sehr gut.

Ich verwende hier die Option Single Selection der Listbox. Wie müsste ich nun meinen Code ändern, damit ich bei der Verwendung von Multi Select alle Einträge die ich ausgewählt habe mit dem Eintrag der Textbox neu besetzte? 

Zum Beispiel:  Ich wähle die ersten Beiden Einträge der Listbox aus, gebe dann "Maximilian" in die Textbox ein und klicke dann auf den CommandButton "Update". Anschließend soll der Eintrag "Maximilian" auch für die beiden Einträge aus der Listbox in Tabelle 1 hinterlegt werden. Also Anstatt dass ich jeden Datensatz einzeln ändere, möchte ich die jeweilig ausgewählten Datensätze der Listbox gleichzeitig ändern.

Edit: Wenn ich von single Selection zu Multi Selection wechsele ändert er immer nur den untersten ausgewählten Datensatz.

Code:
Private Sub cmdÄndern_Click()
Dim lngZeile As Long
Dim i As Integer
Dim lngZeileMax As Long

'Zuerst prüfen, ob überhaupt ein Datensatz im Listenfeld markiert ist
If Me.ListBox1.ListIndex >= 0 Then
lngZeile = Me.ListBox1.Column(0, Me.ListBox1.ListIndex)
Tabelle1.Cells(lngZeile + 1, 5).Value = Me.Controls("TextBox1").Value
'Zurückschreiben in die ListBox
Me.Controls("TextBox1").Value = Tabelle1.Cells(lngZeile + 1, 5).Value
Else
MsgBox "Keine Daten ausgewählt!"
End If
Call cmdSuchen2_Click
End Sub


Vielen Dank für eure Hilfe!


Gruß


Angehängte Dateien
.xlsm   bsp.xlsm (Größe: 24,39 KB / Downloads: 4)
Top
#2
Hallo,

Code:
Private Sub cmdÄndern_Click()
Dim blnA As Boolean
Dim i As Long

With ListBox1
  For i = 0 To .ListCount - 1
    If .Selected(i) Then
      blnA = True
      Tabelle1.Cells(.Column(0, i) + 1, 5).Value = TextBox1.Value
    End If
  Next i
End With
If Not blnA Then
  MsgBox "Keine Daten ausgewählt!"
End If
Call cmdSuchen2_Click
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • diving_excel
Top
#3
Vielen Dank!

Eine Frage hätte ich noch: Für was steht "blnA"?
Top
#4
Hallo,

das steht für eine Boolean-Variable, die die Wahrheitswerte True oder False enthalten kann. Sobald ein Eintrag in deiner Listbox selektiert ist, erhält die Variable den Wert True und die If-Abfrage ist nicht erfüllt und es kommt keine Message-Box.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • diving_excel
Top
#5
Vielen Dank - Wieder was gelernt :)
Top


Gehe zu:


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