Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Combobox als Autofilter

Combobox als Autofilter
Bibo
Hallo EXCEL-Freunde,
ich habe in den Beispielen folgenden Code gefunden, der beinahe optimal meinen Zwecken nahe kommt. Ich möchte nämlich aus einer aufsteigend sortierten Liste ohne Duplikate und ohne Leerwerte auswählen und den ausgewählten Wert in eine Zelle übernehmen.
pp.
Problem: Eine ComboBox in einem Tabellenblatt soll die Funktion des Autofilters erfüllen.
ClassModule: Tabelle1

Private Sub ComboBox1_Change()
Dim iRow As Integer
If ComboBox1.Value = "" Then Exit Sub
Rows.Hidden = False
iRow = 2
Do Until IsEmpty(Cells(iRow, 1))
If Cells(iRow, 1).Value  CInt(ComboBox1.Value) Then
Rows(iRow).Hidden = True
End If
iRow = iRow + 1
Loop
End Sub



Private Sub ComboBox1_DropButtonClick()
Dim col As New Collection
Dim iRow As Integer
ComboBox1.Clear
Range("A1").CurrentRegion.Sort _
key1:=Range("A2"), order1:=xlAscending, header:=xlYes
iRow = 2
On Error Resume Next
Do Until IsEmpty(Cells(iRow, 1))
col.Add CStr(Cells(iRow, 1).Value), CStr(Cells(iRow, 1).Value)
iRow = iRow + 1
Loop
On Error GoTo 0
For iRow = 1 To col.Count
ComboBox1.AddItem col(iRow)
Next iRow
End Sub


Wenn ich den Code anzuwenden versuche bricht er jedoch ab und ich erhalte ich die Fehlermeldung:
Laufzeitfehler '13' Typen unverträglich.
Im VBA-Editor ist bei der Sub-Anweisung ComboBox1_Change()
die Zeile If Cells(iRow, 1).Value CInt(ComboBox1.Value) Then
als Fehlerursache gelb markiert.
Wenn ich innerhalb der Fehlermeldung nicht Debuggen sondern Beenden wähle, wird die getroffene
Auswahl jedoch trotzdem in die in den Eigenschaften der Combobox als LinkedCell angegebene
Zelle übernommen.
Könnt Ihr mir bitte helfen, den Code so anzupassen, dass er in der beigefügten Beispieldatei fehlerfrei läuft und als Datenquelle die Spalte A der Tabelle 2 nutzt, während die Combobox selbst sich in Tabelle 1
befindet.
https://www.herber.de/bbs/user/62922.xls
Mit freundlichem Gruß
Bibo

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

Betreff
Benutzer
Anzeige
AW: Combobox als Autofilter
04.07.2009 23:23:35
Alois
Hallo Bibo!
Ich verstehe noch nicht so ganz, was du vor hast!
Ist es so, dass beim DropDownClick die Spalte A-Tabelle 2 sortiert,
dann der Inhalt der Spalte A-Tabelle2 in die ComboBox geschrieben,
und die ComboBox-Auswahl dann in Zelle A2 der Tabelle 1 eingetragen werden soll?
Gruss Alois
AW: Combobox als Autofilter
05.07.2009 15:40:59
Bibo
Hallo Alois,
habe jetzt erst gesehen, dass Du mir geantwortet hast.
Wie der Code im Einzelnen ablaufen soll, ist für mich von nachrangiger Bedeutung. Im Ergebnis soll jedoch im dropdown z.B. einer Combobox, die sich in Tabelle1 befindet, der aufsteigend sortierte Inhalt der Spalte A der Tabelle2 ohne Duplikate und ohne leere Zeilen zur Auswahl zur Verfügung stehen und der im dropdown gewählte Wert dann z.B. in Zelle A1 eingetragen werden.
In der jetzt beigefügten Beispielarbeitsmappe habe ich es durch Anpassen eines anderen fremden Codes zwar hingekriegt, dass der dropdown-Inhalt aus Tabelle 2 Spalte A ohne Duplikate angezeigt wird, er wird aber leider nicht aufsteigend sortiert und die Spaltenüberschrift ist unerwünschterweise ebenfalls beinhaltet. Außerdem funktioniert der Code erst, wenn er z.B. im VBA-Editor mit F5 aktiviert worden ist.

Die Datei https://www.herber.de/bbs/user/62929.xls wurde aus Datenschutzgründen gelöscht


Ich hoffe, Du kannst / Ihr könnt mir da noch bis zu einem guten Schluss weiterhelfen?
Vielen Dank und einen freundlichem Gruß
Bibo
Anzeige
AW: Combobox als Autofilter
06.07.2009 15:32:13
Alois
Hallo Bibo.
Schau mal hier rein:
https://www.herber.de/bbs/user/62952.xls
Hab deine Beispieldatei bearbeitet und zur ComboBox folgendes hinzugefügt:
Option Explicit

Private Sub ComboBox1_DropButtonClick()
Dim i As Long, wks As Worksheet, saveText
With ComboBox1
'**Anzeige retten
saveText = ComboBox1.Text
'**ComboBox-Liste löschen
Combo_ClearList ComboBox1
'**Aus Tabelle in ComboBox einlesen
Set wks = ThisWorkbook.Sheets("Tabelle2")
For i = 2 To wks.Cells(Rows.Count, 1).End(xlUp).Row
.AddItem wks.Cells(i, 1).Text
Next i
'**ComboBox-Liste sortieren
Combo_Sort ComboBox1
'**ComboBox-Liste, leere und doppelte Einträge entfernen
Combo_Filter ComboBox1
'**Anzeige wiederherstellen
ComboBox1.Text = saveText
Range("A1") = ComboBox1.Text
End With
End Sub


Hoffe es hilft dir.
Gruss Alois

Anzeige
AW: Combobox als Autofilter
06.07.2009 22:22:04
Bibo
Hallo Alois,
vielen Dank, dass Du Dich als Einziger meines Problems angenommen hast.
Ich bin ziemlich zuversichtlich, dass Du es schließlich komplett lösen kannst.
Wenn ich nach dem Öffnen der von Dir bearbeiteten Datei die Makros aktiviert habe und ein erstes Mal eine Auswahl in der Combobox treffen möchte, kommt es noch immer zu dem von mir in meiner Ausgangsfragestellung beschriebenen Laufzeitfehler 13: Typen unverträglich.
Wenn ich nun die Fehlermeldung mit der Schaltfläche "Beenden" wegklicke, funktioniert alles so, wie es sein soll.
Schließe ich die Fehlermeldung mit "Debuggen", ist in der Anweisung "Public Sub Combo_ClearList(Combo As ComboBox)" die Zeile "For i = UBound(Combo.List) To 0 Step -1" als Fehlerursache markiert und als Quickinfo ist "UBound(Combo.List) = angegeben.
Kannst Du diesen Bug bitte noch beheben? Wenn die Auswahl in der Combobox mit Doppelklick getroffen wird, springt der Cursor wohl in Abhängigkeit von der Position des ausgewählten Wertes eine entsprechende Anzahl von Zeilen nach unten. Kann man das noch ändern, dass die Cursorposition nach der Auswahl z.B. konstant Zelle "xy" ist?
Auf jeden Fall schon einmal vielen Dank für Deine Lösung.
Mit freundlichem Gruß
Bibo
Anzeige
AW: Combobox als Autofilter
07.07.2009 02:34:14
Alois
Hallo Bibo.
Startfehler behoben, es wird nun .ListCount abgefragt und nicht mehr Ubound(.List).
Dass beim DropDownClick kein Eintrag vormarkiert wird, konnte ich auf die Schnelle nur so lösen, dass das ComboBox-Textfeld immer wieder auf "" zurückgesetzt wird.
https://www.herber.de/bbs/user/62961.xls
Gruss
Alois
AW: Combobox als Autofilter
07.07.2009 13:27:40
Bibo
Hallo Alois,
vielen lieben Dank für Deine Nachtarbeit. Du leidest doch nicht etwa unter Schlafstörungen? Aber egal, Deine Lösung ist jedenfalls spitze.
Mit freundlichem Gruß
Bibo
AW: Combobox als Autofilter
09.07.2009 02:27:26
Adelhorst
Hallo Bibo.
Schön, dass ich dir helfen konnte.
Gruss Alois
( Ich leide übrigens tatsächlich über extreme Schlafstörungen und die Beschäftigung mit Excel und diesem Forum lenkt mich von meinen chronischen Schmerzen etwas ab. Aber nun fallen mir aber dennoch gleich die Augen zu..)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige