وعليكم السلام أخي الحبيب زيزو
بارك الله فيك وجزاك الله خير الجزاء على هذا الموضوع المميز والرائع
لي تعقيب بسيط طالما نويت استخدام المصفوفات فحاول نسيان التعامل مع ورقة العمل .. لاحظت في كودك الرائع أنك قمت بعمل حلقة تكرارية لخلايا العمود الثاني (وهذا يمكن استبداله بتخزين النطاق في مصفوفة والحلقات التكرارية تكون لعناصر المصفوفة وليس الخلايا .. سيكون هذا أسرع بالتأكيد)
أمر آخر قمت بعمل مصفوفة فرعية تحمل قيمة واحدة ثم تعبئة الليست بوكس بهذه القيمة .. وأنا أرى أنه من الأفضل نسيان الليست بوكس إلى أن يتم تعبئة المصفوفة الفرعية (مصفوفة النتائج) ثم في نهاية المطاف توضع النتائج مرة واحدة في الليس بوكس
جرب الكود التالي ..
Private Sub TextBox1_Change()
Dim a As Variant
Dim b() As Variant
Dim i As Long
Dim j As Long
ListBox1.Clear
a = Sheet1.Range("B2:B" & Sheet1.Range("B" & Rows.Count).End(xlUp).Row).Value
For i = LBound(a, 1) To UBound(a, 1)
If TextBox1.Value = Left(a(i, 1), Len(TextBox1.Value)) Then
j = j + 1
ReDim Preserve b(1 To j)
b(j) = a(i, 1)
End If
Next i
On Error Resume Next
ListBox1.List = b
On Error GoTo 0
End Sub