الكود الدي أشرت إليه دوره هو نسخ القيم من عمود B و نسخها الى عمود XFD وازالة التكرارات منه ثم تعيين مصدر بيانات الكومبوبوكس من نفس العمود
وهو ما تم استبداله بطريقة متقدمة نوعا ما على الشكل التالي دون الحاجة للنسخ واللصق
For Each c In CrWS.Range("B2:B" & lastRow)
If c.Value <> "" Then Tbl.Item(c.Value) = c.Value
Next c
End If
If Tbl.Count > 0 Then
temp = Tbl.Items
Me.ComboBox1.List = temp
لست مـتأكدا مما تحاول فعله لاكن إدا كنت تقصد أنك تريد حدف الصفوف الفارغة عند إختيارك فراغ من الكومبوبوكس جرب هدا التعديل
Public Property Get CrWS() As Worksheet
Dim wbName As String, wsName As String
wbName = "كلية.xlsb"
wsName = "قسم"
On Error Resume Next
Set CrWS = Workbooks(wbName).Sheets(wsName)
On Error GoTo 0
End Property
Private Sub UserForm_Initialize()
Dim Tbl As Object, c As Range, temp As Variant, lastRow As Long
Set Tbl = CreateObject("Scripting.Dictionary")
If Not CrWS Is Nothing Then
lastRow = CrWS.Cells(CrWS.Rows.Count, "B").End(xlUp).Row
If lastRow > 1 Then
For Each c In CrWS.Range("B2:B" & lastRow)
Tbl.Item(c.Value) = c.Value
Next c
End If
If Tbl.Count > 0 Then
temp = Tbl.Items
Me.ComboBox1.List = temp
End If
Else
MsgBox "المصنف أو الورقة المحددة غير موجودة", vbExclamation
End If
End Sub
Private Sub CommandButton1_Click()
Dim lastRow As Long, ky As String
If Me.ComboBox1.Value <> "" Then
If Not CrWS Is Nothing Then
ky = "=*" & Me.ComboBox1.Value & "*"
lastRow = CrWS.Cells(CrWS.Rows.Count, "B").End(xlUp).Row
If lastRow < 2 Then Exit Sub
Application.ScreenUpdating = False
CrWS.Range("B1:B" & lastRow).AutoFilter Field:=1, Criteria1:=ky
On Error Resume Next
CrWS.Range("A2:C" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
On Error GoTo 0
CrWS.AutoFilterMode = False
Application.ScreenUpdating = True
UserForm_Initialize
End If
Else
If Not CrWS Is Nothing Then
lastRow = CrWS.Cells(CrWS.Rows.Count, "B").End(xlUp).Row
If lastRow < 2 Then Exit Sub
Application.ScreenUpdating = False
For i = lastRow To 2 Step -1
If IsEmpty(CrWS.Cells(i, "B").Value) Then CrWS.Rows(i).Delete
Next i
Application.ScreenUpdating = True
UserForm_Initialize
End If
End If
End Sub
إما بخصوص تنفيد الكود على نفس المصنف الأخير
تعديل صفوف الكلمات المختاره او صفوف الخلايا الفارغة عند اختيارها.xlsm