ماجد القثمي قام بنشر أبريل 6, 2017 قام بنشر أبريل 6, 2017 (معدل) لسلام عليكم ورحمة الله وبركاته اخواني الاعزاء لدي طلب مساعده في ملف اكسل به يوزر فورم للبحث عن قيم معينه يقوم اليوزرفورم بالبحث عن قيمة (واحدة )معينه نقوم باختيارها من احد قوائم متعددةcombobox داخل الفورم واعطاء النتائج في ليست بوكس لكن الكود الذي استخدمه يدعم البحث عن متغير واحد فقط مثال ابحث في العمود A عن القيمة أ واظهر النتائج في ليست بوكس . المطلوب هو ان يتم البحث عن القيمة أ في عمود A وتحق]ق شرط اخر ان يقابلها في عمود C مثلا قيمة ب ثم اظهار النتائج في ليست بوكس . اي ابحث ولظهار النائج في ليست بوك اذا كان قيمة أ في عمود A ,و ب في عمود C الملف مرفق وبه اليوزر فورم الرقم السري 221 للدخول الىالفيجوال بيسك وشكرا test.rar تم تعديل أبريل 6, 2017 بواسطه ماجد القثمي
ahmedghandour قام بنشر أبريل 6, 2017 قام بنشر أبريل 6, 2017 السلام عليكم اللي فهمته من حضرتك اانك عاوز تظهر نتائج اكتر في الليست بوكس ولا ايه يبقي دا الكود اللي بتبحث بيه يبقي هاجي علي اول سطر و اقول ان مالوش لازمه في الكود طالما ان حطيت بعده on error resume next و كمان عند فنكشن البحث في سطر اف If Application.WorksheetFunction.Search(M, Q, 1) = 1 Then هغير رقم واحد اللي بعد Q هاخليه (0 'ComboBox1_Find.value = Application.WorksheetFunction.Proper(ComboBox1_Find.value) On Error Resume Next Dim Ws As Worksheet Dim V As Integer Dim LastRow As Integer Dim M As String Dim Q, F ListBox1.Clear ListBox2.Clear If ComboBox1_Find.Text = "" Then GoTo 1 M = ComboBox1_Find.Text Set Ws = Sheets("Cases") With Ws LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row Set Q = .Range("F2:F" & LastRow).Find(M) If Not Q Is Nothing Then F = Q.Address Do If Application.WorksheetFunction.Search(M, Q, 0) = 1 Then ListBox1.AddItem Q.value ListBox2.AddItem Q.value ListBox1.List(V, 0) = Q.Offset(0, -5).value ListBox1.List(V, 1) = Q.Offset(0, -4).value ListBox1.List(V, 2) = Q.Offset(0, -3).value ListBox1.List(V, 3) = Q.Offset(0, -2).value ListBox1.List(V, 4) = Q.Offset(0, -1).value ListBox2.List(V, 0) = Q.Offset(0, 0).value ListBox2.List(V, 1) = Q.Offset(0, 1).value ListBox2.List(V, 2) = Q.Offset(0, 2).value ListBox2.List(V, 3) = Q.Offset(0, 3).value ListBox2.List(V, 4) = Q.Offset(0, 4).value ListBox2.List(V, 5) = Q.Offset(0, 5).value ListBox2.List(V, 6) = Q.Offset(0, 6).value ListBox2.List(V, 7) = Q.Offset(0, 7).value V = V + 1 End If Set Q = .Range("F2:F" & LastRow).FindNext(Q) Loop While Not Q Is Nothing And Q.Address <> F End If End With 1 Me.ComboBox4.value = "" Me.ComboBox5.value = "" Me.ComboBox6.value = "" Me.ComboBox7.value = "" Me.ComboBox8.value = "" Me.ComboBox9.value = "" Me.ComboBox10.value = "" Me.ComboBox4.Visible = False Me.ComboBox5.Visible = False Me.ComboBox6.Visible = False Me.ComboBox7.Visible = False Me.ComboBox8.Visible = False Me.ComboBox9.Visible = False Me.ComboBox10.Visible = False CommandButton5.Visible = False CommandButton7.Visible = False End Sub '================================================================================= 'Search by Lab Name Private Sub ComboBox2_Find_Change() On Error Resume Next ComboBox2_Find.value = Application.WorksheetFunction.Proper(ComboBox2_Find.value) Dim Ws As Worksheet Dim V As Integer Dim LastRow As Integer Dim M As String Dim Q, F ListBox1.Clear ListBox2.Clear If ComboBox2_Find.Text = "" Then GoTo 1 M = ComboBox2_Find.Text Set Ws = Sheets("Cases") With Ws LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row Set Q = .Range("H2:H" & LastRow).Find(M) If Not Q Is Nothing Then F = Q.Address Do If Application.WorksheetFunction.Search(M, Q, 1) = 1 Then ListBox1.AddItem Q.value ListBox2.AddItem Q.value ListBox1.List(V, 0) = Q.Offset(0, -7).value ListBox1.List(V, 1) = Q.Offset(0, -6).value ListBox1.List(V, 2) = Q.Offset(0, -5).value ListBox1.List(V, 3) = Q.Offset(0, -4).value ListBox1.List(V, 4) = Q.Offset(0, -3).value ListBox2.List(V, 0) = Q.Offset(0, -2).value ListBox2.List(V, 1) = Q.Offset(0, -1).value ListBox2.List(V, 2) = Q.Offset(0, 0).value ListBox2.List(V, 3) = Q.Offset(0, 1).value ListBox2.List(V, 4) = Q.Offset(0, 2).value ListBox2.List(V, 5) = Q.Offset(0, 3).value ListBox2.List(V, 6) = Q.Offset(0, 4).value ListBox2.List(V, 7) = Q.Offset(0, 5).value V = V + 1 End If Set Q = .Range("H2:H" & LastRow).FindNext(Q) Loop While Not Q Is Nothing And Q.Address <> F End If End With 1 Me.ComboBox4.value = "" Me.ComboBox5.value = "" Me.ComboBox6.value = "" Me.ComboBox7.value = "" Me.ComboBox8.value = "" Me.ComboBox9.value = "" Me.ComboBox10.value = "" Me.ComboBox4.Visible = False Me.ComboBox5.Visible = False Me.ComboBox6.Visible = False Me.ComboBox7.Visible = False Me.ComboBox8.Visible = False Me.ComboBox9.Visible = False Me.ComboBox10.Visible = False CommandButton5.Visible = False CommandButton7.Visible = False و يارب تكون المعلومه وصلت لو قصد حضرتك حاجه تانيه يريت توضح اكتر
ahmedghandour قام بنشر أبريل 6, 2017 قام بنشر أبريل 6, 2017 فيه حاجه كمان بعيد عن كود البحث for لما تستخدم لزم تعلن عن المتغير بتاعها 1
ماجد القثمي قام بنشر أبريل 8, 2017 الكاتب قام بنشر أبريل 8, 2017 استاذ احمد غندور شكرا جزيلا لتجاوبك يبدو اني لم اوفق في ايصال الفكرة, سوف اقوم بشرحها مجددا الكود الذي استخدمه في الملف المرفق يقوم بالبحث عن اقيمة موجودة في الكومبو بوكس ويتم اختيارها من الليست للبحث عنها. يوجد شيت بها بيانات تخص عدة (معامل) والكومبو بوكس الخاص بالبحث عن اسم المعمل في حال اخترت اسم معمل معين سوف يظهر البيانات الخاصة بهذا المعمل في ليست بوكس وكذلك البحث عن رقم الهاتف ونوع الحالة و و و (بقية الكومبو بوكسز) هذه هي فكرة البحث الحالية. ما اريده هو مثلا ان ابحث عن بيانات معمل محدد اذا كان القيمة في العمود( الحالة status) تساوي كلمة done مثلا او اذا كانت فارغه مثال للتوضيح ...شيت به اسماء اشخاص واعمارهم وجنسياتهم الكود الحالي يبحث عن اسم الاشخاص الذين اسمهم محمد واظهار معلوماتهم في ليست بوكس ,سوف يظهر كل من اسمهم محمد في النتيجه ما اريده هو اضافه شرط اخر مثال ابحث عن الاشخاص الذين اسمهم محمد اذا كان جنسيتهم يمني (وليس كل المحمدين كما في الكود الاول) واظهر الحالات في ليست بوكس هذه الفكرة التي اريد ان اغيرها في الكود وشكرا
خالد الرشيدى قام بنشر مايو 24, 2017 قام بنشر مايو 24, 2017 اخي الكريم ادرج نموزج مبسط جداً وبدون تنسيقات - اعرض فيه المطلوب ولا داعى لتلك الملفات بدون اعمده وصفوف وباسورد للفتح كما الفورم يكوم مبسط وبدون اكواد ... كي لا ياخذ الحل الكثيراً جدا من الوقت تقبل مرورى وتحياتى
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.