nachdem ich hier schon eine Weile mitgelesen und dabei viel gelernt habe (großen Dank dafür an alle Beteiligten!), stehe ich nun vor einem Problem, welches ich nicht selbst lösen kann.
Ich habe eine Liste mit einem Artikelstamm, zu welchem ich eine Artikelauswahl per UserForm kreiert habe. In der Userform sind 2 Textfelder (für die Eingabe der Artikelnummer bzw. der Artikelbezeichnung) und eine Listbox mit 2 Spalten, in welche die Ergebnisse für die Eintragung in eines der Textfelder aufgeführt werden (siehe Anlage).
Bei Änderungen in einer der Textboxen werden die zur Eingabe passenden Ergebnisse in der Listbox aktualisiert. Das funktioniert problemlos, allerdings beläuft sich der Artikelstamm bislang auf 8500 Zeilen und ist noch nicht einmal vollständig. Im Ergebnis führt das dazu, dass die Aktualisierung der Listbox recht langsam ist, da hier über AddItem gefüllt wird.
Private Sub eingabe_change()
Dim LoI As Long
Dim lozeile As Long
Dim loLetzte As Long
Application.ScreenUpdating = False
On Error GoTo errorhandler
Set wb = ThisWorkbook
Set ws = wb.Sheets("Materialanforderung")
Set stamm = wb.Sheets("Artikelstamm")
ws.Activate
loLetzte = IIf(IsEmpty(stamm.Cells(stamm.Rows.Count, 2)), stamm.Cells(stamm.Rows.Count, 2).End( _
_
xlUp).Row, stamm.Rows.Count)
Auswahl.Clear
If Eingabe = "" Then
For LoI = 2 To loLetzte
Auswahl.AddItem stamm.Cells(LoI, 1)
Auswahl.List(Auswahl.ListCount - 1, 1) = stamm.Cells(LoI, 2)
Next
Else
Auswahl.Clear
For LoI = 2 To loLetzte
If Not stamm.Range(stamm.Cells(LoI, 2), stamm.Cells(LoI, 2)).Find(Eingabe, LookIn:= _
xlFormulas, lookat:=xlPart, searchorder:=xlByRows, MatchCase:=False) Is Nothing Then
Auswahl.AddItem stamm.Cells(LoI, 1)
Auswahl.List(Auswahl.ListCount - 1, 1) = stamm.Cells(LoI, 2)
End If
Next
End If
'Set artFound = Nothing
Application.ScreenUpdating = True
GoTo ende
errorhandler:
MsgBox Err.Description, vbExclamation
ende:
End Sub
Eingabe ist hierbei die TextBox für die Artikelbezeichnung.
Wie kann ich die Prozedur beschleunigen?
Vielen Dank im Voraus.
PS: Ich habe mir alles, was ich über VBA weiß, selbst angeeignet (auch unter Studieren dieses Forums), daher sind meine Kenntnisse recht beschränkt.
Mfg René