UserForm ListBox Zeilennummer ermitteln

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox TextBox MsgBox
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

Beiträge aus den Excel-Beispielen zum Thema "UserForm ListBox Zeilennummer ermitteln "