Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Listbox zeigt nicht alle treffer an

Listbox zeigt nicht alle treffer an
01.09.2019 19:29:29
Dominik
hallo,
der nachfolgende code soll alle gleichen zahlen aus textbox 17 in tabelle2 spalte A suchen und die gefunden werte in der listbox mit den spalteninhalten von b:d neben dem gefunden wert ausgeben.
jetzt findet der code zwar alle gleichen zahlen, gibt mir in der listbox aber nur die letzte gleiche gefunden zahl mit den spalten daneben in der listbox aus, und von den anderen gefunden werten nur die zahlen ohne der spalten daneben.
2. frage: nachdem alle gefundenen treffer in der listbox angezeigt werden, würde ich gerne durch klick auf z.b. den ersten wert in der listbox einen hyperlink öffnen der auch auf tabellenblatt 2 in spalte F steht. und wenn ich den zweiten wert in der listbox anklicke soll hier auch der entsrpechende link geöffnet werden.
Private Sub CommandButton1_Click()
Dim rng As Range
Dim strFirst As String
ListBox5.Clear
With Sheets("Tabelle2")
Set rng = Sheets(2).Range("P:P").Find(What:=TextBox17.Value, LookIn:=xlValues, LookAt:= _
xlWhole)
If Not rng Is Nothing Then
strFirst = rng.Address
ListBox5.ColumnCount = 4
Do
ListBox5.AddItem rng.Value
ListBox5.List(I, 1) = Sheets(2).Cells(rng.Row, 4)
ListBox5.List(I, 2) = Sheets(2).Cells(rng.Row, 5)
ListBox5.List(I, 3) = Sheets(2).Cells(rng.Row, 6)
Set rng = Sheets(2).Range("P:P").FindNext(rng)
Loop While Not rng Is Nothing And strFirst  rng.Address
End If
End With
Set rng = Nothing
End Sub
vielen dank für eure hilfe.
gruß Dominik
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox zeigt nicht alle treffer an
01.09.2019 19:30:42
Hajo_Zi
Hallo Dominik,
frage jemand der neben Dir sitzt der sieht die Datei.
Die meisten hier sehen Sie nicht.
Da Sie nicht auf Deinen Rechner schauen.
Vielleicht sollte die Datei verlinkt werden?
Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster*, Test*, Mappe*, Beispiel*, Fehler*, Kalender*, UserForm*, Forum* usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.
Das ist nur meine Meinung zu dem Thema.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Listbox zeigt nicht alle treffer an
01.09.2019 20:05:25
Nepumuk
Hallo Dominik,
teste mal:
Private Sub CommandButton1_Click()
    Dim rng As Range
    Dim objSheet As Worksheet
    Dim strFirst As String
    Set objSheet = Worksheets("Tabelle2")
    With ListBox5
        .Clear
        .ColumnCount = 5
        Set rng = objSheet.Columns("P").Find(What:=TextBox17.Value, _
            LookIn:=xlValues, LookAt:=xlWhole)
        If Not rng Is Nothing Then
            strFirst = rng.Address
            Do
                .AddItem rng.Value
                .List(.ListCount - 1, 1) = objSheet.Cells(rng.Row, 4).Value
                .List(.ListCount - 1, 2) = objSheet.Cells(rng.Row, 5).Value
                .List(.ListCount - 1, 3) = objSheet.Cells(rng.Row, 6).Value
                .List(.ListCount - 1, 4) = rng.Row
                Set rng = objSheet.Columns("P").FindNext(After:=rng)
            Loop Until strFirst = rng.Address
        End If
    End With
    Set rng = Nothing
    Set objSheet = Nothing
End Sub

Private Sub ListBox5_Click()
    With ListBox5
        ThisWorkbook.FollowHyperlink Worksheets("Tabelle2").Cells( _
            Clng(.List(.ListIndex, 4)), 6).Hyperlinks(1).Address
    End With
End Sub

Ich musste in der ListBox eine weitere Spalte einfügen damit ich weis in welcher Zeile sich der gewünschte Hyperlink befindet.
Gruß
Nepumuk
Anzeige
AW: Listbox zeigt nicht alle treffer an
01.09.2019 23:05:36
Dominik
Hallo Nepumuk,
vielen dank funktioniert genauso so wie ich es haben wollte.
eine frage habe ich noch zu dem Private sub listbox 5 kannst du mir erklären was er da genau macht und für was die zahlen 4, 6 und 1 in hyperlink stehen. ich bekommen es nämlich nicht zum laufen.
gruß dominik
Anzeige
AW: Listbox zeigt nicht alle treffer an
02.09.2019 07:27:02
Nepumuk
Hallo Dominik,
die 4 steht für die fünfte Spalte der ListBox (Zeilennummer). Die 6 für die sechste Spalte der Tabelle (F). Und die 1 für den ersten Hyperlink in der Zelle, wobei es in Zellen nur einen Hyperlink geben kann.
Gruß
Nepumuk
AW: Listbox zeigt nicht alle treffer an
03.09.2019 19:52:04
Dominik
hallo Nepumuk,
vielen vielen dank es funktioniert.
eine sache ist mir noch eingefallen, da ich die datei verschicken will und auch andere außerhalb des netzwerkes die pdf datei öffnen sollen, geht dies nur wenn ich die pdf datei in excel als objekt einbette. ist es auch möglich darüber in einer listbox die jeweilige pdf datei in der entsprechenden zelle zu öffnen? hoffe das geht.
Gruß Dominik
Anzeige
AW: Listbox zeigt nicht alle treffer an
03.09.2019 21:32:47
Nepumuk
Hallo Dominik,
teste mal:
Private Sub ListBox5_Click()
    Dim objOLEObject As OLEObject
    Dim lngRow As Long
    With ListBox5
        lngRow = Clng(.List(.ListIndex, 4))
    End With
    For Each objOLEObject In Worksheets("Tabelle2").OLEObjects
        With objOLEObject
            If .TopLeftCell.Row = lngRow Then
                Call .Verb(Verb:=xlVerbPrimary)
                Set objOLEObject = Nothing
                Exit For
            End If
        End With
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Listbox zeigt nicht alle treffer an
03.09.2019 22:35:42
Dominik
Hallo Nepumuk,
1000 dank du bist genial ;)
gruß Dominik
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Listbox in Excel: Alle Treffer anzeigen und Hyperlinks nutzen


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass die Listbox in Excel alle Treffer anzeigt, kannst Du den folgenden VBA-Code verwenden. Dieser sucht in der Spalte P der Tabelle2 nach dem Wert aus TextBox17 und zeigt alle gefundenen Werte in der Listbox an:

Private Sub CommandButton1_Click()
    Dim rng As Range
    Dim strFirst As String
    Dim I As Long
    ListBox5.Clear
    With Sheets("Tabelle2")
        Set rng = .Range("P:P").Find(What:=TextBox17.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not rng Is Nothing Then
            strFirst = rng.Address
            ListBox5.ColumnCount = 4
            Do
                I = ListBox5.ListCount
                ListBox5.AddItem rng.Value
                ListBox5.List(I, 1) = .Cells(rng.Row, 4).Value
                ListBox5.List(I, 2) = .Cells(rng.Row, 5).Value
                ListBox5.List(I, 3) = .Cells(rng.Row, 6).Value
                Set rng = .Range("P:P").FindNext(rng)
            Loop While Not rng Is Nothing And strFirst <> rng.Address
        End If
    End With
    Set rng = Nothing
End Sub

Füge den Code in das entsprechende UserForm ein. Achte darauf, dass die Listbox die richtige Anzahl an Spalten hat, um die Daten korrekt anzuzeigen.


Häufige Fehler und Lösungen

  1. Listbox zeigt nur den letzten Treffer an
    Stelle sicher, dass Du den Index I vor dem Hinzufügen eines neuen Items aktualisierst. Verwende I = ListBox5.ListCount, bevor Du AddItem aufrufst.

  2. Fehler beim Öffnen eines Hyperlinks
    Überprüfe, ob die Hyperlinks in der richtigen Spalte (z.B. Spalte F) korrekt gesetzt sind. Verwende den folgenden Code, um beim Klick auf ein Listbox-Element den Hyperlink zu öffnen:

Private Sub ListBox5_Click()
    With ListBox5
        ThisWorkbook.FollowHyperlink Worksheets("Tabelle2").Cells(.List(.ListIndex, 4), 6).Hyperlinks(1).Address
    End With
End Sub

Alternative Methoden

Falls Du eine alternative Methode zur Anzeige von Daten in der Listbox nutzen möchtest, könntest Du auch ein Array verwenden, um die Werte zwischenzuspeichern und dann in die Listbox zu laden. Das kann die Performance verbessern, besonders bei großen Datenmengen.


Praktische Beispiele

  • Beispiel 1: Verwende den oben genannten Code, um eine Listbox in einer UserForm zu füllen, die alle Werte aus einer bestimmten Spalte anzeigt.
  • Beispiel 2: Füge eine weitere Spalte zur Listbox hinzu, die die Zeilennummer enthält. Das ist hilfreich, um die Zeile später für Hyperlinks oder andere Aktionen zu verwenden.

Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im Code, um unerwartete Probleme beim Suchen oder Öffnen von Hyperlinks zu vermeiden.
  • Optimierung: Überlege, ob Du die Daten vor dem Suchen in ein Array laden kannst, um die Suche zu beschleunigen, insbesondere bei großen Datenmengen.
  • Visuelle Anpassung: Passe das Layout der UserForm an, um die Benutzerfreundlichkeit zu erhöhen, indem Du z.B. Farben oder Schriftarten änderst.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass die Listbox immer aktualisiert wird, wenn sich die Daten ändern?
Antwort: Du kannst den Code in das Worksheet_Change-Ereignis der Tabelle einfügen, um die Listbox jedes Mal zu aktualisieren, wenn eine Änderung erfolgt.

2. Frage
Kann ich auch andere Dateitypen (z.B. PDFs) über die Listbox öffnen?
Antwort: Ja, Du kannst den entsprechenden Code anpassen, um OLE-Objekte in der Listbox zu verlinken und sie durch einen Klick zu öffnen. Achte darauf, die richtigen Zellreferenzen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige