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

Gefilterte Tabellenwerten in Dropdown übergeben

Forumthread: Gefilterte Tabellenwerten in Dropdown übergeben

Gefilterte Tabellenwerten in Dropdown übergeben
13.10.2017 12:57:45
Zac
Hallo zusammen,
ich habe mal wieder ein Problemchen. Und zwar habe ich eine Tabelle mit fünf Spalten. Diese filtere ich mittels drei Dropdown-Auswahlfelder. Der Filter funktioniert auch ganz gut und filtert die Tabelle so, wie ich es haben möchte.
VariableÖffnungsart = Sheets("Lüftungsantriebe").Range("E67").Value
Sheets("Lüftungsantriebe").ListObjects("Tabelle4").Range.AutoFilter Field:=2, Criteria1:= "=" &  _
VariableÖffnungsart, Operator:=xlAnd
VariableKraft = Sheets("Lüftungsantriebe").Range("G67").Value
Sheets("Lüftungsantriebe").ListObjects("Tabelle4").Range.AutoFilter Field:=5, Criteria1:= ">" &  _
VariableKraft, Operator:=xlAnd
VariableHub = Sheets("Lüftungsantriebe").Range("I67").Value
Sheets("Lüftungsantriebe").ListObjects("Tabelle4").Range.AutoFilter Field:=4, Criteria1:= ">=" & VariableHub, Operator:=xlAnd
Nun würde ich gerne eine Spalte dieser gefilterten Tabellen in ein weiteres Dropdownfeld übergeben und dem Benutzer die Auswahl zu erleichtern. Allerdings bekomm ich es nicht hin, dass nur die gefilterten Werte angezeigt werden, sondern alle.
Kann jemand bitte helfen?
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gefilterte Tabellenwerten in Dropdown übergeben
13.10.2017 13:21:41
Nepumuk
Hallo Zac,
ein Dropdown welcher Art (Gültigkeitsliste, Formularsteuerelement, ActiveX-Control) und wo (Tabellenblatt, Userform)?
Gruß
Nepumuk
AW: Gefilterte Tabellenwerten in Dropdown übergeben
13.10.2017 13:28:15
Zac
am liebsten Gültigkeitsliste in einem (anderem) Tabellenblatt. Würde aber auch mit den beiden anderen gehen. Zur Info: Die von mir genannten anderen drei Dropdowns sind auch Gültigkeitslisten
Anzeige
AW: Gefilterte Tabellenwerten in Dropdown übergeben
13.10.2017 13:54:38
Nepumuk
Hallo Zac,
folgende Prozedur in das Modul der Tabelle die das Dropdown enthalten soll:
Private Sub Worksheet_Activate()
    Dim objClipBoard As Object
    Dim strTemp As String
    Dim avntInput As Variant
    
    
    'Tabellenblattname und Spalte anpassen !!!!!!!!!!!!
    Call Worksheets("Tabelle1").ListObjects(1).DataBodyRange.Columns(1).Copy
    
    
    Set objClipBoard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    Call objClipBoard.GetFromClipboard
    strTemp = objClipBoard.GetText
    Set objClipBoard = Nothing
    strTemp = Left$(strTemp, Len(strTemp) - 2)
    avntInput = Split(strTemp, vbCrLf)
    
    
    'Zelle die das Dropdown enthält anpassen !!!!!!!!
    With Cells(1, 1)
        
        
        If .Validation Is Nothing Then Call .Validation.Delete
        Call .Validation.Add(Type:=xlValidateList, Formula1:=Join(avntInput, ","))
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Gefilterte Tabellenwerten in Dropdown übergeben
13.10.2017 13:59:30
Zac
Danke schon mal. werde ich dann mal ausprobieren.
wenn ich über eine ComboBox gehen würde? Gibt es hier keine Möglichkeit, die ausgeblendeten Daten nicht zu berücksichtigen?
 ComboBox1.ListFillRange = _
"Lüftungsantriebe!$A$71:" & _
Worksheets("Lüftungsantriebe").Cells(Worksheets("Lüftungsantriebe").Rows.Count, 1).End(xlUp).Address
Danke schon. (und bitte Verständnis für einen VBA-Deppen)
Anzeige
AW: Gefilterte Tabellenwerten in Dropdown übergeben
13.10.2017 14:00:56
Nepumuk
Hallo Zac,
nein, das geht nicht.
Gruß
Nepumuk
Stop !!! Da ist noch ein Fehler drin
13.10.2017 13:57:48
Nepumuk
Nochmal Hallo,
so passt es:
Option Explicit

Private Sub Worksheet_Activate()
    Dim objClipBoard As Object
    Dim strTemp As String
    Dim avntInput As Variant
    
    
    'Tabellenblattname und Spalte anpassen !!!!!!!!!!!!
    Call Worksheets("Tabelle1").ListObjects(1).DataBodyRange.Columns(1).Copy
    
    
    Set objClipBoard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    Call objClipBoard.GetFromClipboard
    strTemp = objClipBoard.GetText
    Set objClipBoard = Nothing
    strTemp = Left$(strTemp, Len(strTemp) - 2)
    avntInput = Split(strTemp, vbCrLf)
    
    
    'Zelle die das Dropdown enthält anpassen !!!!!!!!
    With Cells(1, 1)
        
        
        If Not .Validation Is Nothing Then Call .Validation.Delete
        Call .Validation.Add(Type:=xlValidateList, Formula1:=Join(avntInput, ","))
    End With
End Sub

Gruß
Nepumuk
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Gefilterte Werte in Dropdown-Listen übergeben


Schritt-für-Schritt-Anleitung

  1. Tabelle erstellen: Stelle sicher, dass du eine Tabelle mit den entsprechenden Spalten und Daten hast, die du filtern möchtest.

  2. Dropdown-Filter einrichten: Füge die Dropdown-Filter hinzu, um die Daten nach deinen Kriterien zu filtern. Das kannst du mit der Datenüberprüfung in Excel tun.

  3. VBA-Code hinzufügen: Öffne den VBA-Editor (Alt + F11) und füge den folgenden Code in das Modul der Tabelle ein, die das Dropdown enthalten soll:

    Private Sub Worksheet_Activate()
       Dim objClipBoard As Object
       Dim strTemp As String
       Dim avntInput As Variant
    
       ' Tabellenblattname und Spalte anpassen
       Call Worksheets("Tabelle1").ListObjects(1).DataBodyRange.Columns(1).Copy
    
       Set objClipBoard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
       Call objClipBoard.GetFromClipboard
       strTemp = objClipBoard.GetText
       Set objClipBoard = Nothing
       strTemp = Left$(strTemp, Len(strTemp) - 2)
       avntInput = Split(strTemp, vbCrLf)
    
       ' Zelle, die das Dropdown enthält, anpassen
       With Cells(1, 1)
           If Not .Validation Is Nothing Then Call .Validation.Delete
           Call .Validation.Add(Type:=xlValidateList, Formula1:=Join(avntInput, ","))
       End With
    End Sub
  4. Dropdown anpassen: Ändere die Zelle, in der das Dropdown angezeigt werden soll, und teste die Funktionalität.


Häufige Fehler und Lösungen

  • Problem: Dropdown zeigt alle Werte an, nicht nur gefilterte.

    • Lösung: Stelle sicher, dass der VBA-Code korrekt in das richtige Modul eingefügt wurde und dass die Filter richtig gesetzt sind.
  • Problem: Fehler beim Ausführen des VBA-Codes.

    • Lösung: Überprüfe, ob die entsprechenden Objekte und Variablen im Code korrekt deklariert sind.

Alternative Methoden

  • Formularsteuerelemente verwenden: Statt einer Gültigkeitsliste kannst du auch ein Formularsteuerelement oder eine ActiveX-Control verwenden, um Dropdowns zu erstellen. Diese bieten mehr Flexibilität, benötigen jedoch etwas mehr Programmierkenntnisse.

  • Combobox verwenden: Wenn du eine ComboBox verwenden möchtest, kannst du den Bereich für die ListFillRange dynamisch anpassen, um nur die sichtbaren Werte anzuzeigen. Beachte jedoch, dass dies die ausgeblendeten Daten nicht berücksichtigt.

ComboBox1.ListFillRange = "Lüftungsantriebe!$A$71:" & _
Worksheets("Lüftungsantriebe").Cells(Worksheets("Lüftungsantriebe").Rows.Count, 1).End(xlUp).Address

Praktische Beispiele

  • Beispiel 1: Wenn du eine Tabelle mit Produkten hast, kannst du die Produkte nach Kategorie filtern und dann die gefilterten Produkte in ein Dropdown übergeben, um die Auswahl für den Benutzer zu erleichtern.

  • Beispiel 2: Verwende mehrere Dropdowns, um die Filterkriterien zu kombinieren. Dies kann die Benutzererfahrung verbessern, indem den Nutzern nur relevante Optionen angezeigt werden.


Tipps für Profis

  • Optimierung des VBA-Codes: Achte darauf, dass dein VBA-Code effizient ist. Vermeide unnötige Berechnungen und wiederholte Abfragen der gleichen Daten.

  • Fehlerbehandlung implementieren: Füge Fehlerbehandlungsroutinen in deinen VBA-Code ein, um potenzielle Probleme während der Ausführung zu erkennen und zu lösen.

  • Dokumentation: Halte deinen Code gut dokumentiert, damit du oder andere ihn in der Zukunft leichter nachvollziehen können.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur gefilterte Werte in meinem Dropdown angezeigt werden? Um sicherzustellen, dass nur gefilterte Werte angezeigt werden, musst du den VBA-Code korrekt anpassen, um die Daten aus der gefilterten Liste zu kopieren.

2. Geht das auch ohne VBA? Ja, du kannst auch mit der Funktion „Datenüberprüfung“ und einer dynamischen Liste arbeiten, jedoch ist die Flexibilität hierbei eingeschränkt. VBA bietet eine elegantere Lösung.

3. Kann ich mehrere Dropdowns in einer Tabelle verwenden? Ja, du kannst mehrere Dropdowns in einer Tabelle verwenden. Stelle sicher, dass jede Zelle, die ein Dropdown enthält, entsprechend angepasst wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige