Herbers Excel-Forum - das Archiv

multiselect

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: multiselect
von: Basti

Geschrieben am: 02.04.2005 12:57:32
Hallo zusammen,
Bei dem Code unten hat die Listbox3 die multiselectextendet eigenschaft aber es wird nicht wie gewünscht (Value) eingetragen nicht mal wenn ich nur ein was auswähle in der Listbox drei
Private Sub CommandButton1_Click()
Sheets("tabelle1").Activate
Range("a2000").End(xlUp).Offset(1, 0).Activate
With UserForm2
ActiveCell.Offset.Value = ListBox1.Value
ActiveCell.Offset(0, 1).Value = ListBox2.Value
ActiveCell.Offset(0, 2).Value = ListBox3.Value
End With
End Sub

Wenn ich also jetzt drei Sachen markiere in der Listbox drei möchte ich gern das das erste nach Offset(0, 2) eingetragen wird das zweite darunter und so weiter.
Gruß Basti
Bild

Betrifft: AW: multiselect
von: Hajo_Zi

Geschrieben am: 02.04.2005 13:06:21
Hallo Basti,
ich mache mir nicht die Mühe und baue die Userform mit 3 Listboxen nach. Die erstellung hast Du ja schon gemacht. Läst Du die mehrfach auswahl in Deiner Listbox zu mußt Du eine Schleife einsetzen. z.B. so
Private Sub CommandButton1_Click()
Dim Loletzte As Long
Dim LoI As Long
With Worksheets("Tabelle1")
Loletzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Loletzte = 65536 Then
MsgBox "keine Zeile mehr frei"
Exit Sub
End If
'   von Peter Haserodt
For LoI = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(LoI) Then
's = s & ListBox1.List(i)
' Beispiel nur Spalte 1
.Cells(Loletzte + 1, 1) = ListBox1.List(LoI, 0)
Loletzte = Loletzte + 1
End If
Next LoI
End With
End Sub


Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Bild

Betrifft: AW: multiselect
von: Ramses

Geschrieben am: 02.04.2005 13:08:59
Hallo
Wenn die Eigenschaft auf "Multiselect" steht, gibt die Listbox keinen Wert mehr direkt zurück. Du musst per Schleife durch alle Listbox-einträge gehen und auf die Eigenschaft "selected = True" prüfen
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Integer, tmpR As Integer
'Berechnet das Offset
tmpR = 0
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
ActiveCell.Offset(tmpR, 2) = Me.ListBox1.List(i)
tmpR = tmpR + 1
End If
Next i
End Sub


Gruss Rainer
Bild

Betrifft: AW: multiselect
von: Basti
Geschrieben am: 02.04.2005 13:59:25
Hab zwar den Inhalt des Code nicht wirklich verstanden, konnte es aber mit herumprobieren so zusammenbasteln das ich es super gebrauchen kann.
Vielen Dank Basti
 Bild