اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

  • أفضل إجابة
قام بنشر

تفضل هناك كود من أعمل الأستاذ ياسر خليل

والمعادلة من أعمال الأستاذ سليم حاصبيا , لهما منا كل الحب والإحترام

Option Explicit
Sub UniqueSortedList()
    Dim Arr, X As Object
    Application.ScreenUpdating = False
    With CreateObject("System.Collections.ArrayList")
        Set X = .Clone: X.Add " "
        Sheets("Sheet1").Activate
        For Each Arr In Sheets("Sheet1").Range("m2", Range("M" & Rows.Count).End(xlUp)).Value
            If Arr <> "" Then
                If IsNumeric(Arr) Then
                    If Not .Contains(Arr) Then .Add Arr
                Else
                    If Not X.Contains(Arr) Then X.Add CStr(Arr)
                End If
            End If
        Next
        .Sort: X.Sort: .addRange X: Arr = Join(.ToArray, ",")
    End With
    Sheets("Sheet1").Activate
    With Sheets("Sheet1").Range("e4").Validation
        .Delete
        .Add xlValidateList, 1, 1, Arr
    End With
    Application.ScreenUpdating = True
End Sub

على الرغم ان هذا الموضوع تم تناوله أكثر من مرة وكان عليك البحث جيداً -تفضل

عمل قائمة منسدلة ديناميكية مطاطية بدون تكرار اى بند فيها

قائمة منسدلة بدون تكرار وبدون فراغات بالكود والمعادلات.xlsm

  • Like 2
قام بنشر

جرب هذا الملف

Option Explicit
Dim col As Object
Dim ro%, i%
Dim Sh As Worksheet
'++++++++++++++++++++++++++++++++++
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
  If Not Intersect(Target, Range("a:a")) Is Nothing _
   And Target.Count = 1 Then
   data_val
   Cells(2, "F") = Target
  End If
Application.EnableEvents = True
End Sub
'+++++++++++++++++++++++++++++++++++++++++
Sub data_val()

Set Sh = Sheets("Sheet1")
ro = Sh.Cells(Rows.Count, 1).End(3).Row
Set col = CreateObject("System.Collections.Arraylist")
  With Sh
      For i = 2 To ro
       If .Cells(i, 1) <> vbNullString And _
          Not col.Contains(.Cells(i, 1).Value) Then
          col.Add .Cells(i, 1).Value
        End If
      Next i
    
      With .Cells(2, "F").Validation
      .Delete: .Add 3, Formula1:=Join(col.toarray, ",")
      End With
    End With
End Sub

الملف مرفق

 

Abou_hasn_validation.xlsm

  • Like 2
قام بنشر

تحفة حلو جدا استاذى والله ما اروعك بارك الله فيك

لى سؤال حاولت اغير العمود من A الى m

مكان القائمة من f2 الى 

("e:e50")

الكود لم يعمل خرجت من الشيت ورجعت ايضا لم يعمل

اشكرك من كل قلبى استاذى الغالى لقلبى استاذ سليم 

  • Like 1
قام بنشر

حفظك الله استاذنا الغالى

Option Explicit
Dim col As Object
Dim ro%, i%
Dim Sh As Worksheet
'++++++++++++++++++++++++++++++++++
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
  If Not Intersect(Target, Range("m:m")) Is Nothing _
   And Target.Count = 1 Then
   data_val
   Cells(2, "e") = Target
  End If
Application.EnableEvents = True
End Sub
'+++++++++++++++++++++++++++++++++++++++++
Sub data_val()

Set Sh = Sheets("Sheet1")
ro = Sh.Cells(Rows.Count, 1).End(3).Row
Set col = CreateObject("System.Collections.Arraylist")
  With Sh
      For i = 2 To ro
       If .Cells(i, 1) <> vbNullString And _
          Not col.Contains(.Cells(i, 1).Value) Then
          col.Add .Cells(i, 1).Value
        End If
      Next i
    
      With .Range("E2:E50").Validation
      .Delete: .Add 3, Formula1:=Join(col.toarray, ",")
      End With
    End With
End Sub

تم التنفيذ وايضا الكود توقف 

اشكرك من قلبى

قام بنشر

يجب استبدال الرفم 1 الذي هو رقم العامود " ِA " في هذا السطر الى رقم العامود M  اي  (13)

او استبداله الى "M"

ro = Sh.Cells(Rows.Count, "M").End(3).Row

و كذلك هنا

 If .Cells(i, "M") <> vbNullString And _
          Not col.Contains(.Cells(i, "M").Value) Then
          col.Add .Cells(i, "M").Value

 

  • Like 1
قام بنشر

تم ويعمل مائة بالمائة

سلمت وسلمت يمينك وبارك الله لك وحفظك من كل شر

يا باشا حضرتك عبقرى من عباقرة الاكسيل تسلم لنا وحفظك الله 

استاذى واخى فى الله استاذ سليم

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information