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

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

قام بنشر

جزاكم الله خيراً أخي الحبيب رجب على هذا الحل الرائع

إليك حل آخر إثراءً للموضوع

ضع الكود التالي في حدث الفورم

Private Sub UserForm_Initialize()
    Dim Rng As Range
    Dim Dn As Range
    Dim Dic As Object
    With Sheets("Sheet1")
        Set Rng = .Range(.Range("C6"), .Range("C" & Rows.Count).End(xlUp))
    End With
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.CompareMode = vbTextCompare
    For Each Dn In Rng: Dic(Dn.Value) = Empty: Next
    ComboBox1.List = Application.Transpose(Dic.keys)
End Sub

Private Sub ComboBox1_Click()
    Call cValues(ComboBox1.Value, ComboBox2, 4) '4 Is Column Number
End Sub

Private Sub ComboBox2_Click()
    Call cValues(ComboBox2.Value, ComboBox3, 5) '5 Is Column Number
End Sub

Sub cValues(Txt As String, Obj As Object, Col As Integer)
    Dim Dn As Range
    Dim Rng As Range
    Dim Dic As Object

    Obj.Clear
    With Sheets("Sheet1")
        Set Rng = .Range(.Cells(6, Col), .Cells(Rows.Count, Col).End(xlUp))
    End With

    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.CompareMode = 1

    For Each Dn In Rng
        If Dn.Offset(, -1).Value = Txt Then
            If Not Dic.exists(Dn.Value) Then
                Dic(Dn.Value) = Empty
            End If
        End If
    Next Dn
    Obj.List = Application.Transpose(Dic.keys)
End Sub

قمت بإعادة تسمية الكومبوبوكس .. بدلاً من Sanf استخدمت الاسم الافتراضي ComboBox1 وبدلاً من Nawa استخدمت ComboBox2 والثالث جعلته بدلاً من ComboBox1 جعلته ComboBox3 .. كما قمت بإزالة الـ Row Source  لأول كومبوبوكس ..

تم الاستغناء عن الأكواد في حدث ورقة العمل .. فقط الكود في حدث الفورم هو الذي يقوم بالمهمة كاملة إن شاء الله

أرجو أن يكون الملف مقبول لديكم

تقبل تحياتي

 

Dependent ComboBox On UserForm YasserKhalil.rar

  • Like 6
قام بنشر
8 ساعات مضت, كاسر الامواج said:

تكملة

 

في 2/15/2016 at 01:13, كاسر الامواج said:

اممتاز جدأ جزاك الله خير لم يكتمل الاجراء  حيث لم يستدعى العمود F  في TextBox_mycode

السلام عليكم ارجو تكملة 

قام بنشر (معدل)

السلام عليكم

أخى الحبيب / ياسر خليل

أخى الفاضل / كاسر الأمواج

بالنسبة للكود الرائع الخاص بأخى الحبيب ياسر

فيه نقطة واحدة وهى انه عند الاختيار من ComboBox2 يضع فى ComboBox3 كل الخلايا من العمود E  التى تقابل الاختيار

الموجود للـ ComboBox2  ( وليكن مستشفيات )  مثلا  بغض النظر عن الاختيار الموجود فى ComboBox1 الخاص باسم المحافظة

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

وذلك بسبب الكود cValues

ولذلك عملت تعديل بسيط على الكود الرائع وسميته  cValuesR  لتدارك تلك النقطة الخاصة بـ ComboBox3

Sub cValuesR(Txt1 As String, Txt2 As String, Obj As Object, Col As Integer)
Dim Dn As Range
    Dim Rng As Range
    Dim Dic As Object

    Obj.Clear
    With Sheets("Sheet1")
        Set Rng = .Range(.Cells(6, Col), .Cells(Rows.Count, Col).End(xlUp))
    End With

    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.CompareMode = 1

    For Each Dn In Rng
        If Dn.Offset(, -1).Value = Txt1 And Dn.Offset(, -2).Value = Txt2 Then
            If Not Dic.exists(Dn.Value) Then
                Dic(Dn.Value) = Empty
            End If
        End If
    Next Dn
    Obj.List = Application.Transpose(Dic.keys)
End Sub

 

 

 

Dependent ComboBox On UserForm YasserKhalil.rar

تم تعديل بواسطه رجب جاويش
  • Like 3
قام بنشر

بارك الله فيك وجزاك الله كل خير أخي ومعلمي المتميز رجب جاويش

بالفعل كلامك مضبوط ..لم أنتبه للكومبوبوكس الثالث .. عموماً الحمد لله إن فيه أساتذة كبار يصححوا لنا الخطأ

تقبل وافر تقديري واحترامي

 

  • Like 2
قام بنشر

أخى الحبيب /  ياسر خليل

جزاك الله كل خير على هذه الكلمات الطيبة

ورفع الله قدرك لهذا التواضع

فنحن جميعا فى المنتدى نتعلم من ابداعك الذى لا ينقطع يوميا

 

 

 

 

  • Like 2
قام بنشر

السلام عليكم

 استاذنا الحبيب / ياسر خليل            ربنا يكرمك   .. ابداع مستمر  :clapping:

تحياتى للاستاذ القدير / رجب جاويش

اخى الكريم انصحك بتفقد الرابط التالى حيث يتناول شرح الكود المستخدم    .. تقبلوا مرورى وتحياتى

http://www.officena.net/ib/topic/63175-تعديل-في-الأكواد-تعبئة-الكومبو-بقيم-فريدة-باستخدام-scriptingdictionary/?_fromLogout=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