Hussein888 قام بنشر ديسمبر 31, 2024 قام بنشر ديسمبر 31, 2024 السلام عليكم ورحمة الله وبركاته اخوتي و اخواتي الاعزاء.. سؤالي بخصوص القائمة المنسدلة عن طريق data validation.. هل يوجد طريقة اني لما اكتب في الحقل اي حرف يظهرلي القائمة المنسدلة بها القيمة مطابقة لما تم كتابته.. يعني مثلا الخلية تشمل قائمة منسدلة بها اسماء طلبة مثلا محمد و احمد و حسام و نبيل.. اريد عند كتابة حرف ن مثلا تنزل القائمة المنسدلة و يظهرلي نبيل فقط.. و هكذا مع العلم انها موجوده في اكسل 365.. هل يمكن تفعيلها في اوفيس 2016
تمت الإجابة محمد هشام. قام بنشر ديسمبر 31, 2024 تمت الإجابة قام بنشر ديسمبر 31, 2024 (معدل) أخي @Hussein888 في Excel 365 يوجد خاصية تلقائية تعرف بـ AutoComplete التي تجعل القوائم المنسدلة تتفاعل بشكل ديناميكي مع الحروف التي تكتبها في الخلية حيث يتم تحديث القائمة لتظهر القيم التي تطابق ما كتبته لكن في Excel 2016 لا توجد هذه الخاصية بشكل افتراضي في القوائم المنسدلة المعتمدة على Data Validation ولكن هناك حل بديل باستخدام VBA كما في المثال التالي بما أنك لم تقم بإرفاق ملفك لتحديد النطاقات المطلوبة إليك الكود يمكنك تعديله بما يناسبك 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 تم تعديل ديسمبر 31, 2024 بواسطه محمد هشام. 1 1
Hussein888 قام بنشر يناير 2 الكاتب قام بنشر يناير 2 ماشاء الله عليك... ربنا يحفظك و يزيدك و ياريت تعرفني طريقة اتعلم بيها او فيديوهات شرح الى حد الاحتراف الى ان اصل الى مثل مستواك في كتابة الاكواد و الموديول
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.