Listindex aus ListBox mit multipleselect
#1
Hallo!

Nachdem ich mein letztes Problem hier schön lösen konnte, stehe ich nun vor einem neuem.

Ich habe eine Eingabemaske in einem UserForm, in dem man bestimmte Suchkriterien für Dokumente eingeben und unter einen Namen speichern kann. Das ganze, damit man hinterher überprüfen kann, ob die Dokumente in der gegebenen Datenbank vorhanden sind.

Über eine ListBox kann man, unter den jeweils gespeicherten Namen, eine der Suchen auswählen.

Die Formeln, die die Datenbank dann nach dem jeweiligen Werten durchsuchen, benötigen den Listindex der ausgewählten Suche, was auch bisher kein Problem darstellte.


Jetzt stehe ich vor dem Problem, dass ich bei Multipleselect nicht an den ListIndex komme, weil nicht implementiert.

Gibt es eine Möglichkeit an die ausgewähten Indizes ohne große Umwege zu gelangen?
Ansonsten habe ich auch die Möglichkeit die selektierten Namen im Tabellenblatt selbst auszugeben, dazu habe ich die Aufzählung der über die Eingabemaske eingegebenen gespeicherten Suchnamen. Kann ich so evtl über eine Hilfsspalte mir selbst einen Index erstellen?
liebe Grüße!
Top
#2
Oder noch einmal anders ausgedruckt:

Für eine Listbox liegen die Daten in Tabelle1!A1:A10.

Ich habe nun davon 3 Daten selektiert und diese automatisch in B1:B3 ausgegeben. Wenn es 4 wären, bis B4 etc. die Sortierung ist die selbe wie in den Ursprungsdaten.

Wie bekomme ich raus, welche "Position"/"Nummer" aus A1:A10, in der ListBox ausgewählt wurden?

Nun noch einmal mit kleiner Beispieldatei


Angehängte Dateien
.xlsm   Test.xlsm (Größe: 16,93 KB / Downloads: 5)
Top
#3
Hallo,

mit der Selected-Eigenschaft lassen sich die markierten Zeilen ermitteln:
Hier mal ein Beispiel:

Private Sub CommandButton2_Click()
 Dim i As Long
 With ListBox1
   If .ListIndex > -1 Then
     For i = 0 To .ListCount - 1
       If .Selected(i) Then
         MsgBox "Index = " & i & vbNewLine & "  Text = " & .List(i)
       End If
     Next i
   End If
 End With
End Sub

Gruß Uwe
Top
#4
Stimmt, ich kann ja einfach den Zähler mit ausgeben =) Suuper, vielen Dank!
Top
#5
Ohne 'rowsource':


Code:
Private Sub UserForm_Initialize()
    ListBox1.List = Tabelle1.Cells(1).CurrentRegion.Resize(, 1).Value
End Sub


Private Sub CommandButton1_Click()
  For j = 0 To UBound(ListBox1.List)
     If Not ListBox1.Selected(j) Then ListBox1.List(j, 0) = "~"
  Next
  sp = Filter(Application.Transpose(ListBox1.List), "~", 0)
 
  Cells(1, 10).Resize(UBound(sp) + 1) = Application.Transpose(sp)
 
  Unload Me
End Sub
Top


Gehe zu:


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