Ich habe eine Excel Tabelle mit einer Stückzahl in Spalte B und einem Firmenname in Spalte C. In einer Userform soll nun in einem Textfeld eine Eingabe (Stückzahl, also Zahlen) gemacht werden. Dabei soll sich die Listbox, die am Anfang alle Einträge (Stückzahl und Firmenname ) enthält, nur noch die Einträge anzeigen, die zur Eingabe in der Textbox passen.
Problem: Userform lässt sich zwar öffnen, bei einer Eingabe kommt aber der Fehler: Laufzeitfehler 13 Typen unverträglich
Beim Debuggen wird der Code
Set RaFound = .Range("B6:B" & LoLetzte).Find(Tx_Stückzahl _
& "*", .Cells(LoLetzte, 1), , xlWhole, , xlNext)
gelb markiert.
Hier mein Code:
Option Explicit
Dim LoLetzte As Long
Private Sub Lst_Firmenname_Click()
Tx_Stückzahl = Lst_Firmenname
End Sub
Private Sub Tx_Stückzahl _Change()
Dim LoI As Long
Dim LoZeile As Long
Dim RaFound As Range
Application.ScreenUpdating = False
If Tx_Stückzahl = "" Then
Lst_Firmenname.RowSource = "B6:C" & LoLetzte
Else
Lst_Firmenname.RowSource = ""
With Worksheets("Tabelle1")
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Set RaFound = .Range("B6:B" & LoLetzte).Find(Tx_Stückzahl _
& "*", .Cells(LoLetzte, 1), , xlWhole, , xlNext)
If Not RaFound Is Nothing Then
For LoI = RaFound.Row To LoLetzte
If UCase(Left(.Cells(LoI, 1), Len(Tx_Stückzahl ))) _
= UCase(Tx_Stückzahl ) Then
Lst_Firmenname.AddItem .Cells(LoI, 1)
Lst_Firmenname.List(LoZeile, 1) = .Cells(LoI, 2)
LoZeile = LoZeile + 1
Else
If UCase(Left(.Cells(LoI, 1), 1)) _
UCase(Left(Tx_Stückzahl , 1)) Then
Exit For
End If
End If
Next
End If
End With
End If
Set RaFound = Nothing
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
With Worksheets("Tabelle1")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
.Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
Lst_Firmenname.RowSource = "B6:c" & LoLetzte
Lst_Firmenname.ColumnCount = 2
End With
End Sub
Schon mal vielen Dank für eure Antworten