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

ComboBox nur gefilterte Werte zulassen

Forumthread: ComboBox nur gefilterte Werte zulassen

ComboBox nur gefilterte Werte zulassen
28.09.2017 20:49:11
Anton
Hallo liebe Helfer/innen,
ich habe da mal ein Problemchen. Ich filtere zunächst einige Werte aus einer Tabelle und möchte im Anschluss nur noch die noch angezeigten Daten in einer ComboBox anzeigen lassen.
Hier die Beispieldatei:
https://www.herber.de/bbs/user/116614.xlsm
Hat jemand eine Idee wie man so etwas anstellen könnte?
Viele Grüße
Anton
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox nur gefilterte Werte zulassen
28.09.2017 20:52:36
Nepumuk
Hallo Anton,
welche Spalte(n) soll(en) angezeigt werden?
Gruß
Nepumuk
AW: ComboBox nur gefilterte Werte zulassen
28.09.2017 20:54:12
Anton
Hallo Nepumuk,
danke für die Antwort.
Die Spalte A in der Tabelle1
Viele Grüße
Anton
AW: ComboBox nur gefilterte Werte zulassen
28.09.2017 21:03:24
Nepumuk
Hallo Anton,
in dem Modul des Userforms (an Stelle deines Codes):
Option Explicit

Private Sub UserForm_Activate()
    Dim objDataObject As DataObject
    Dim strTemp As String
    Application.ScreenUpdating = False
    With Tabelle1
        .Range(.Cells(2, 1), .Cells(.Rows.Count, 1)).Copy
    End With
    Set objDataObject = New DataObject
    objDataObject.GetFromClipboard
    With Application
        .CutCopyMode = False
        Application.ScreenUpdating = True
    End With
    strTemp = objDataObject.GetText
    Set objDataObject = Nothing
    strTemp = Left$(strTemp, Len(strTemp) - 2)
    ComboBox1.List = Split(strTemp, vbCrLf)
End Sub

Gruß
Nepumuk
Anzeige
AW: ComboBox nur gefilterte Werte zulassen
28.09.2017 21:33:22
Anton
Hallo Nepumuk,
SPITZE! Nur gibt es ein kleines Problemchen. Jedesmal wenn ich die ComboBox nochmals aufrufe kommt folgende Fehlermeldung:
Userbild
Ich kann das nur verhindern, wenn ich davor ein anderes Tabellenblatt aufrufe und dann nochmals versuche die ComboBox aufzurufen, dann klappt es wieder.
Hast du eine Idee?
Anzeige
AW: ComboBox nur gefilterte Werte zulassen
29.09.2017 05:47:58
Werner
Hallo Anton,
hier ein anderer Weg:
Private Sub UserForm_Initialize()
Dim raBereich As Range, raZelle As Range
Dim loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set raBereich = .Range(.Cells(2, 1), .Cells(loLetzte, 1))
For Each raZelle In raBereich.SpecialCells(xlCellTypeVisible)
Me.ComboBox1.AddItem raZelle.Value
Next raZelle
End With
End Sub
Ich fülle erst ab Zeile 2 der Spalte A, da ich davon ausgegangen bin, dass in Zeile 1 Überschriften stehen.
Gruß Werner
Anzeige
AW: ComboBox nur gefilterte Werte zulassen
29.09.2017 07:53:10
Nepumuk
Hallo Anton,
kann ich nicht nachvollziehen. Kannst du eine Mustermappe hochladen in der das Problem auftaucht?
Gruß
Nepumuk
AW: ComboBox nur gefilterte Werte zulassen
29.09.2017 08:44:42
Anton
Hallo Nepumuk,
gestern hatte ich ein paar mal diese Fehlermeldung und heute taucht sie nicht mehr auf. Wahnsinn! Also alles Bestens und jetzt hoffe ich das es auch so bleibt.
Vielen lieben Dank!!!!
Klasse!
Anzeige
Frage
29.09.2017 06:33:12
Werner
Hallo Nepumuk,
interessehalber die Frage: Weshalb machst du das über das Clipboard?
Das hat bestimmt irgendwelche Vorteile, sonst würdes du das so nicht anbieten. Würde mich interessieren.
Gruß Werner
AW: Frage
29.09.2017 07:55:14
Nepumuk
Hallo Werner,
weil Excel beim Copy einer gefilterten Liste nur die sichtbaren Zellen kopiert.
Gruß
Nepumuk
Anzeige
AW: Frage
29.09.2017 08:07:53
Werner
Hallo Nepumuk,
danke für die Info.
Gruß Werner
;
Anzeige
Anzeige

Infobox / Tutorial

ComboBox in Excel: Nur gefilterte Werte zulassen


Schritt-für-Schritt-Anleitung

Um in Excel eine ComboBox zu erstellen, die nur gefilterte Werte anzeigt, gehe wie folgt vor:

  1. Öffne Visual Basic for Applications (VBA): Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein UserForm hinzu: Klicke auf Einfügen > UserForm, um ein neues UserForm zu erstellen.

  3. Füge eine ComboBox hinzu: Ziehe die ComboBox aus der Toolbox auf das UserForm.

  4. Füge folgenden VBA-Code in das UserForm ein:

    Private Sub UserForm_Activate()
       Dim objDataObject As DataObject
       Dim strTemp As String
       Application.ScreenUpdating = False
       With Tabelle1
           .Range(.Cells(2, 1), .Cells(.Rows.Count, 1)).Copy
       End With
       Set objDataObject = New DataObject
       objDataObject.GetFromClipboard
       With Application
           .CutCopyMode = False
           Application.ScreenUpdating = True
       End With
       strTemp = objDataObject.GetText
       Set objDataObject = Nothing
       strTemp = Left$(strTemp, Len(strTemp) - 2)
       ComboBox1.List = Split(strTemp, vbCrLf)
    End Sub
  5. Schließe den VBA-Editor und teste das UserForm, indem du es startest.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Öffnen der ComboBox: Wenn du beim Öffnen der ComboBox eine Fehlermeldung erhältst, stelle sicher, dass die Tabelle korrekt gefiltert ist, und dass sich Daten in der angegebenen Spalte befinden.

  • ComboBox zeigt keine Werte an: Überprüfe, ob die Zellen in der Tabelle tatsächlich sichtbar sind und nicht ausgeblendet wurden.

  • Problem mit Clipboard: Wenn du beim Kopieren von Werten auf Probleme stößt, stelle sicher, dass das Clipboard korrekt verwendet wird. Du kannst auch alternative Methoden ausprobieren, um Daten zu laden.


Alternative Methoden

Man kann auch andere Ansätze nutzen, um die ComboBox mit gefilterten Werten zu füllen. Hier ist ein Vorschlag von einem Benutzer:

Private Sub UserForm_Initialize()
    Dim raBereich As Range, raZelle As Range
    Dim loLetzte As Long
    With Worksheets("Tabelle1")
        loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set raBereich = .Range(.Cells(2, 1), .Cells(loLetzte, 1))
        For Each raZelle In raBereich.SpecialCells(xlCellTypeVisible)
            Me.ComboBox1.AddItem raZelle.Value
        Next raZelle
    End With
End Sub

Diese Methode verwendet die SpecialCells-Funktion, um nur sichtbare Zellen zu erfassen und sie der ComboBox hinzuzufügen.


Praktische Beispiele

Um die ComboBox mit gefilterten Werten aus einer Tabelle zu füllen, stelle sicher, dass deine Daten in Tabelle1 beginnen. Zum Beispiel:

  • Daten in Spalte A:
    1. Apfel
    2. Banane
    3. Kirsche

Wenn du nur die sichtbaren Zellen nach einem Filter anzeigen möchtest, wird die ComboBox diese Werte dynamisch anpassen, wenn du das UserForm öffnest.


Tipps für Profis

  • Daten validieren: Stelle sicher, dass die Daten in deiner Tabelle korrekt formatiert sind, um unerwartete Fehler zu vermeiden.
  • Verwendung von Named Ranges: Du kannst benannte Bereiche nutzen, um die Wartung deines Codes zu erleichtern.
  • Erweiterte Filter-Optionen: Nutze die Advanced Filter-Funktion von Excel, um komplexe Datensätze zu filtern und die Ergebnisse in der ComboBox anzuzeigen.

FAQ: Häufige Fragen

1. Wie kann ich die ComboBox auf eine andere Tabelle verweisen?
Ändere einfach den Namen in der With-Anweisung auf die gewünschte Tabelle.

2. Was mache ich, wenn die ComboBox nicht reagiert?
Überprüfe, ob das UserForm korrekt initialisiert wird und ob die ComboBox die richtigen Daten erhält.

3. Gibt es eine Möglichkeit, die Auswahl in der ComboBox zu beschränken?
Ja, du kannst den Code so anpassen, dass nur bestimmte Werte aus der Liste hinzugefügt werden, indem du Bedingungen für die Sichtbarkeit der Zellen festlegst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige