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