Herbers Excel-Forum - das Archiv

UserForm ListBox Zeilennummer ermitteln

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

Betrifft: UserForm ListBox Zeilennummer ermitteln
von: VolkerM

Geschrieben am: 17.04.2005 10:35:20
Hallo
Habe folgendes Problem:
Ich möchte die tatsächliche Zeilennummer (in der Tabelle) der gefilterten Datensätze, welche in einer ListBox angezeigt werden, nach dem Filtern ermitteln, um mit ihr dann weiterarbeiten zu können.
Die Datensätze werden über eine TextBox und eine ListBox (UserForm) mit folgendem Code (stammt von Hans) gesucht bzw. angezeigt.
Private Sub Suchen()
Dim rngFind As Range, rngFirst As Range
Dim I As Integer
lstFind.Clear
I = TextBox1.Value
Set rngFind = Sheets("Daten").Columns(I).Find( _
What:=txtSuchen.Text, _
LookAt:=xlPart, _
LookIn:=xlValues)
If rngFind Is Nothing Then
Beep
MsgBox "Kein Suchbegriff gefunden!"
Exit Sub
End If
Set rngFirst = rngFind
Do
lstFind.AddItem rngFind
Set rngFind = Sheets("Daten").Columns(I).FindNext(rngFind)
Loop While Not rngFind Is Nothing And _
rngFind.Address <> rngFirst.Address
End Sub

Private Sub lstFind_Click()
TextBox3.Value = ????
End Sub

Gibt es eine Möglichkeit ?

Vielen Dank im Voraus.
Gruß Volker
Bild

Betrifft: AW: UserForm ListBox Zeilennummer ermitteln
von: andre

Geschrieben am: 17.04.2005 11:06:41
Hallo Volker,
versuch's mal so. ColumnCount der Listbox vorher auf 2 setzen. Code ist ungetestet.
Private Sub Suchen()
Dim rngFind As Range, rngFirst As Range
Dim I As Integer
Dim arrValues() As Variant
lstFind.Clear
I = TextBox1.Value
Set rngFind = Sheets("Daten").Columns(I).Find( _
What:=txtSuchen.Text, _
LookAt:=xlPart, _
LookIn:=xlValues)
If rngFind Is Nothing Then
Beep
MsgBox "Kein Suchbegriff gefunden!"
Exit Sub
End If
Set rngFirst = rngFind
Do
ReDim Preserve arrValues(0 To 2, 0 To intRowU)
arrValues(0, intRowU) = rngFind
arrValues(1, intRowU) = rngFind.Row
intRowU = intRowU + 1
Set rngFind = Sheets("Daten").Columns(I).FindNext(rngFind)
Loop While Not rngFind Is Nothing And _
rngFind.Address <> rngFirst.Address
lstFind.List = arrValues
End Sub

Grüße, Andre
Bild

Betrifft: AW: UserForm ListBox Zeilennummer ermitteln
von: VolkerM

Geschrieben am: 17.04.2005 11:53:54
Hallo Andre
Danke für deine schnelle Anwort.
Die richtige Zeilennummer wird ermittelt. Nur die Suchergebnisse schreibt er nun in den ersten Index der ListBox und die richtige Zeilennummer in den zweiten, jeweils nebeneinander. Somit werden lediglich 2 Treffer angezeigt.
Mit
......
ReDim Preserve arrValues(0 To 2, 0 To intRowU)
arrValues(0, intRowU) = rngFind
arrValues(1, intRowU) = rngFind.Row
intRowU = intRowU + 1
TextBox3.Value = rngFind.Row
Set rngFind = Sheets("Daten").Columns(I).FindNext(rngFind)
......
erhalte ich die gewünschte Zeilennummer.
Das hilft mir schon weiter.
Hast du noch eine Idee?
Gruß Volker
Bild

Betrifft: AW: UserForm ListBox Zeilennummer ermitteln
von: andre

Geschrieben am: 17.04.2005 11:58:53
Hallo Volker,
2 Fehler:
1. müsste wohl
statt
ReDim Preserve arrValues(0 To 2, 0 To intRowU)
besser
ReDim Preserve arrValues(0 To 1, 0 To intRowU)
2. und statt
lstFind.List = arrValues
besser
lstFind.column = arrValues
hängt mit den Regeln für das ReDIm eines Array zusammen. Das geht eigentlich nur in einer der beiden Dimensionen, und da muss man den Eintrag in die Listbox rumdrehen.
Grüße, Andre
Bild

Betrifft: AW: UserForm ListBox Zeilennummer ermitteln
von: VolkerM
Geschrieben am: 17.04.2005 12:19:42
Hallo Andre
Danke vielmals. Das war es.
Noch einen schönen Sonntag.
Gruß Volker
 Bild
Excel-Beispiele zum Thema "UserForm ListBox Zeilennummer ermitteln "
Diagramm in Userform XL-Dateien in UserForm listen
UserForm an Excel-Fenster anpassen Fundstellen in UserForm listen
Module und UserForms austauschen In einer Schleife auf Elemente einer UserForm zugreifen
Werte in eine ComboBox einer UserForm übernehmen Zellinhalt als Label-Aufschrift in UserForm
Alle CheckBoxes einer UserForm ansprechen Wenn kein Eintrag, UserForm nicht schließen