Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Abhängige Comboboxen/Listboxen - Filterfunktion
#1
Hallo zusammen, 

ich habe anbei meine Tabelle angefügt bei welcher ich leider nicht mehr weiterkomme. 
Es geht darum, dass die ComboBox1 die in der Projektliste aufgeführten Projekte aufführt und je nach Auswahl die ListBox1 die davon abhängigen Einträge aus der DatenbankMaterial anzeigt. 
Quasi eine Filterfunktion der Listbox1 in Abhängigkeit von der ComboBox1.

Ich würde mich sehr über eine einfache Lösung freuen.

Beste Grüße


Angehängte Dateien
.xlsm   Materiallisten.xlsm (Größe: 48,55 KB / Downloads: 9)
Antwortento top
#2
Hallo Otto,

schau mal, ob die Änderungen bereits zum Ziel führen.
Nach einer Änderung in der Combobox wird die Listbox neu gefüllt und hierbei nach dem jeweiligen Eintrag in der Combobox gefiltert.
Ob woanders jetzt noch was anzupassen ist, habe ich nicht geprüft. Probiere es halt mal aus.

Code:

Private Sub ComboBox1_Change()
  Call LIST_LADEN_UND_INITIALISIEREN
End Sub

Private Sub LIST_LADEN_UND_INITIALISIEREN()
  Dim lZeile As Long, lOutZeile As Long
  Dim lZeileMaximum As Long
  Dim i As Integer
  
  Call ComboBox1_Initialize
  

    'Alle TextBoxen leer machen
    For i = 1 To iCONST_ANZAHL_EINGABEFELDER
        Me.Controls("TextBox" & i) = ""
    Next i

    ListBox1.Clear 'Liste leeren
    
    '4 Spalten einrichten
    'Spalte 1: Zeilennummer des Datensatzes
    'Spalte 2: Spalte A)
    'Spalte 3: (Spalte B)
    'Spalte 4: (Spalte C)
    ListBox1.ColumnCount = 5
    
    'Spaltenbreiten der Liste anpassen (0=ausblenden, nichts=automatisch)
    '"<Breite Spalte 1>;<Breite Spalte 2>;<Breite Spalte 3>;<Breite Spalte 4>"
    ListBox1.ColumnWidths = "0;;;"
    'Feste Breiten: ListBox1.ColumnWidths = "0;100;100;100"
    
    'Um eine Schleife fŸr alle DatensŠtze zu erhalten benštigen wir die letzte verwendete Zeile
    lZeileMaximum = Tabelle12.UsedRange.Rows.Count 'Benutzer Bereich auslesen
    
    
    For lZeile = lCONST_STARTZEILENNUMMER_DER_TABELLE To lZeileMaximum
        
        'Nur wenn die Zeile benutzt / nicht leer ist, zeigen wir etwas an:
        If IST_ZEILE_LEER(lZeile) = False Then
            
            'Spalte 1 der Liste mit der Zeilennummer fŸllen
           If CStr(Tabelle12.Cells(lZeile, 5).Text) = ComboBox1.Value Then
              ListBox1.AddItem lZeile

            'Spalten 2 bis 4 der Liste fŸllen
              ListBox1.List(ListBox1.ListCount - 1, 1) = CStr(Tabelle12.Cells(lZeile, 1).Text)
              ListBox1.List(ListBox1.ListCount - 1, 2) = CStr(Tabelle12.Cells(lZeile, 2).Text)
              ListBox1.List(ListBox1.ListCount - 1, 3) = CStr(Tabelle12.Cells(lZeile, 3).Text)
              ListBox1.List(ListBox1.ListCount - 1, 4) = CStr(Tabelle12.Cells(lZeile, 4).Text)
            End If
            
        End If
        
    Next lZeile
    
End Sub

______________________
viele Grüße aus Freigericht
Karl-Heinz
Antwortento top
#3
Moin Volti, 

TAUSEND DANK. Das war gar nicht so schwer! Funktioniert super.

Noch eine doofe Frage, die ich noch nicht gelöst bekommen haben. Wie bekomme ich die Zeile 1 als Überschrift in die ListBox?

Besten Dank!
Antwortento top
#4
Hallo Otto,

ich habe Listboxen noch so gut wie nie benutzt, aber soweit ich weiß, wird das Setzen der Kopfzeilen in der Listbox per VBA nicht unterstützt wird.

Das klappt nur mit .RowSource-Range (Bereichszuweisung). Dann aber wiederum kannst Du nicht mehr die Items per VBA dort reinbringen.

Wenn Du es unbedingt brauchst, könntest Du ja über der Listbox entsprechende Textfelder positionieren und beschriften lassen oder einfach die erste Zeile so mit einlesen.....

Aber vielleicht hat ja irgendjemand noch die passende Lösung dazu.

viele Grüße
Karl-Heinz
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste