mit der Hilfe von Werner konnte ich meine Tabelle sehr effektiv verfeiern und habe im allgemeinen bisher sehr viel Hilfe und Input bekommen. Durch viel Nachlesen und probieren habe ich meine Tabelle auch bereits stark erweitern können.
Nun stoße ich jedoch an ein kleines Problem und komme nicht weiter. Mir gehen sogar die Suchbegriffe in Google aus und ich sehe den Wald vor lauter Bäumen nicht mehr.
Ich habe in meiner Tabelle einen Button über den wird eine UserForm aufgerufen. Auf dieser befinden sich eine ListBox, eine TextBox und 3 CommandButton (Suche starten, Suchergebnis anzeigen und Abbrechen).
Die Tabelle reicht von A6:AO20000 und in A5:AO5 stehen die Überschriften.
Die ListBox ist 10 spaltig, damit der User die Suchergebnisse unterscheiden kann.
Der Suchbegriff kann irgendwo im Bereich A6:AO20000 zu finden sein.
Ich soll dass über VBA lösen, da sich viele Kollegen und Kolleginnen wohl von der Excel eigenen Suchfunktion erschlagen fühlen. Ich frage mich zwar warum... aber naja... ich soll es nach Möglichkeit richten. Menschen lassen sich nicht so leicht ändern wie Code... (ein ermutigendes Zitat von meinem Chef).
In die TextBox kann der User einen Suchwert eingeben. In der ListBox werden alle Ergebnisse mit diesem Suchwert ausgegeben.
Soweit funktioniert alles super.
Nun möchte ich dass aber so gestalten, dass wenn eine Zeile in der ListBox ausgewählt und auf den CommandButton "Suchergebnis anzeigen" geklickt, dann genau die Zeile mit dem ausgewähltem Suchergebnis selektiert wird.
Mit meinem bisherigen Code wird mir immer nur dass erste Ergebnis der Listbox angezeigt und die komplette Zeile selektiert. Kommt dass dadurch, dass ich im Anzeigen Button den Suchwert = ListBox1.Value definiere?
Weiß jemand wie ich das realisieren kann bzw. wo mein Fehler oder auch Denkfehler ist?
Ich poste noch meinen bisherigen Coda dazu.
Mit diesem befülle ich die ListBox:
Private Sub cmdSuchen_Click()
Dim s As String
Dim Found As Range
Dim firstaddress As String
Dim i As Integer
On Error Resume Next
i = 0
s = TextBox1.Value
If s = "" Then
MsgBox "Bitte geben Sie einen Suchbegriff ein!", vbExclamation, "Hinweis!"
Exit Sub
End If
ListBox1.Clear
With ActiveSheet
Set Found = .Cells.Find(what:=s, LookAt:=xlPart)
If Not Found Is Nothing Then
firstaddress = Found.Address
ListBox1.ColumnCount = 10
Do
ListBox1.AddItem Found
ListBox1.List(i, 1) = Cells(Found.Row, 3) 'hier habe ich die wichtigen Spalten gewählt
ListBox1.List(i, 2) = Cells(Found.Row, 4)
ListBox1.List(i, 3) = Cells(Found.Row, 5) ' auf diese Spalte 5 könnte ggf. verzichtet _
werden
ListBox1.List(i, 4) = Cells(Found.Row, 6)
ListBox1.List(i, 5) = Cells(Found.Row, 7)
ListBox1.List(i, 6) = Cells(Found.Row, 8)
ListBox1.List(i, 7) = Cells(Found.Row, 10)
ListBox1.List(i, 8) = Cells(Found.Row, 11)
ListBox1.List(i, 9) = Cells(Found.Row, 12)
Set Found = Cells.FindNext(after:=Found)
If Found.Address = firstaddress Then Exit Do
i = i + 1
Loop
End If
End With
End Sub
Und mit diesem Soll dass ausgewählte Suchergebnis angezeigt werden:
Es ist nur SingleSelect möglich in der ListBox
Private Sub cmdAnzeigen_Click()
Dim Suchergebnis As Variant
Dim Suchwert As String
Suchergebnis = Empty
If ListBox1.ListIndex >= 0 Then
With ActiveSheet.Range("A6:AO20000")
Suchwert = ListBox1.Value
Set Suchergebnis = .Find(what:=Suchwert, LookIn:=xlValues)
If Not Suchergebnis Is Nothing Then Suchergebnis.Rows.EntireRow.Select Else Exit Sub
End With
Else
MsgBox "Bitte wählen Sie eine Ergebniszeile aus!", vbExclamation, "Hinweis!"
Exit Sub
End If
Unload UserForm8
Set Suchergebnis = Nothing
End Sub
Ich danke Euch vielmals im Voraus für Eure Hilfe und tatkräftige Unterstützung!
Dazu wünsche ich noch einen schönen Abend.
Lieben Gruß
Felix