Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Anzeige in Listbox erweitern, was muss ich ändern

Betrifft: Anzeige in Listbox erweitern, was muss ich ändern von: Kai
Geschrieben am: 18.08.2014 10:58:18

Hallo,
habe hier im Archiv ein gutes Beispiel gefunden, dass ich gesucht habe. Hab es ein bischen angepasst. Wenn ich nun im Textfeld txtSuchen einen Suchbegriff eingebe und suche, wird mir in der Listbox alle Zellen mit Inhalt aufgelistet, die den Suchbegriff beinhalten. Die Listbox ist einspaltig.

Ich würde die Listbox gerne erweitern und nicht nur einspaltig den Inhalt aus der Zelle anzeigen lassen, sondern auch jeweils aus der Tabelle in dem gefundenen DS den Inhalt aus Spalte A und B. In Spalte A und B stehen Namen drin, mit denen ich dann den gesuchten Inhalt eindeutig identifizieren kann. Es bringt mir nichts, wenn ich nur weiss, dass gesuchte Ergebnis befindet sich irgendwo in der Tabelle, sondern ich will auch sehen, in welchem DS.

So ein DS soll in der Listbox dann so aussehen: (Gesucht wurde zB nach "AUFTRAG")

gefundenes Ergebnis______InhaltSpalteA_____InhaltSpalteB_______
AUFTRAGSNUMMER-123456____DAIMLER___________PROJEKT-INHOUSE_____

Dim rngFind As Range, rngFirst As Range
lstFind.Clear
Set rngFind = ActiveSheet.Cells.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 = ActiveSheet.Cells.FindNext(rngFind)
Loop While Not rngFind Is Nothing And rngFind.Address <> rngFirst.Address

Kann mir da jemand helfen ?

Danke
Kai

  

Betrifft: AW: Anzeige in Listbox erweitern, was muss ich ändern von: fcs
Geschrieben am: 18.08.2014 12:49:32

Hallo Kai,

solange du max. 10 Spalten in deiner Listbox darstellen willst funktioniert folgende Methode.

  Do
    lstFind.AddItem rngFind
    With lstFind
      .List(.ListCount - 1, 1) = ActiveSheet.Cells(rngFind.Row, 1).Text 'Wert aus Spalte A
      .List(.ListCount - 1, 2) = ActiveSheet.Cells(rngFind.Row, 2).Text 'Wert aus Spalte B
    End With
    Set rngFind = ActiveSheet.Cells.FindNext(rngFind)
    
  Loop While Not rngFind Is Nothing And rngFind.Address <> rngFirst.Address

Unter den Eigenschaften der Listbox musst du noch die Eigenschaft "ColumnCount" auf die gewünschte Spaltenzahl ändern und ggf. die Spaltenbreiten unter "ColumnWidth" in der Form 120Pt;100Pt;150Pt anpassen.

In Fällen wie deinem ist es oft nützlich auch die Zeilennummer aus der der Datensatz stammt in einer Spalte der Listbox zu speichern. Dann hat man ggf. die Möglichkeit über den gewählten Listeneintrag auf alle Daten zum zugehörigen Datensatz in der Quelltabelle zugreifen zu können.

Gruß
Franz


  

Betrifft: Danke Dir, funktioniert super, 10 reicht gut , owT von: kai
Geschrieben am: 18.08.2014 14:43:15




 

Beiträge aus den Excel-Beispielen zum Thema "Anzeige in Listbox erweitern, was muss ich ändern "