اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

السلام عليكم ورحمة الله وبركاته اخوتي و اخواتي الاعزاء.. سؤالي بخصوص القائمة المنسدلة عن طريق data validation.. 

هل يوجد طريقة اني لما اكتب في الحقل اي حرف يظهرلي القائمة المنسدلة بها القيمة مطابقة لما تم كتابته.. 

يعني مثلا الخلية تشمل قائمة منسدلة بها اسماء طلبة مثلا محمد و احمد و حسام و نبيل.. 

اريد عند كتابة حرف ن مثلا تنزل القائمة المنسدلة و يظهرلي نبيل فقط.. و هكذا 

 

مع العلم انها موجوده في اكسل 365.. 

هل يمكن تفعيلها في اوفيس 2016

  • تمت الإجابة
قام بنشر (معدل)

أخي @Hussein888   في Excel 365 يوجد خاصية تلقائية تعرف بـ AutoComplete التي تجعل القوائم المنسدلة تتفاعل بشكل ديناميكي مع الحروف التي تكتبها في الخلية
 حيث يتم تحديث القائمة لتظهر القيم التي تطابق ما كتبته لكن في Excel 2016 لا توجد هذه الخاصية بشكل افتراضي في القوائم المنسدلة المعتمدة على  Data Validation ولكن هناك حل بديل باستخدام VBA  كما في المثال التالي 

ScreenRecorderProject10.gif.9427466263d0266908578a4e40e2f583.gif

بما أنك لم تقم بإرفاق ملفك لتحديد النطاقات المطلوبة إليك الكود يمكنك تعديله بما يناسبك 


Option Compare Text
Dim a()

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' تحديد نطاق القوائم المنسدلة
    If Not Intersect([A2:A10], Target) Is Nothing And Target.Count = 1 Then
     ' (الأسماء) تحديد نطاق البيانات
        Set Rng = Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row)
        Set tbl = CreateObject("Scripting.Dictionary")
        tbl.CompareMode = vbTextCompare
        For Each c In Rng
            If c.Value <> "" Then tbl(c.Value) = ""
        Next c
        a = tbl.Keys
        'ترتيب ابجدي
        tri a, 1, UBound(a)
        With Me.ComboBox1
        .List = a: .Top = Target.Top: .Left = Target.Left: .Width = Target.Width
        .Height = Target.Height + 3: .Visible = True: .Activate
        End With
    Else
        Me.ComboBox1.Visible = False
    End If
End Sub
Private Sub ComboBox1_Change()
    If Me.ComboBox1.Text <> "" Then
        Set tbl = CreateObject("Scripting.Dictionary")
        tmp = "*" & UCase(Me.ComboBox1.Text) & "*" ' البحث عن النص في أي مكان
        For Each c In a
            If UCase(c) Like tmp Then tbl(c) = ""
        Next c
        Me.ComboBox1.List = tbl.Keys
        Me.ComboBox1.DropDown
    End If
    ActiveCell.Value = Me.ComboBox1.Text
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.ComboBox1.List = a
    Me.ComboBox1.Activate
    Me.ComboBox1.DropDown
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub
Sub tri(a, gauc, droi)
    ref = a((gauc + droi) \ 2)
    g = gauc: d = droi
    Do
        Do While a(g) < ref: g = g + 1: Loop
        Do While ref < a(d): d = d - 1: Loop
        If g <= d Then
            temp = a(g): a(g) = a(d): a(d) = temp
            g = g + 1: d = d - 1
        End If
    Loop While g <= d
    If g < droi Then Call tri(a, g, droi)
    If gauc < d Then Call tri(a, gauc, d)
End Sub

 

Test-Data Validation.xlsb

تم تعديل بواسطه محمد هشام.
  • Like 1
  • Thanks 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