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

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

قام بنشر

استاذى الفاضل

شوقى ربيع

هذا السطر بالكود 

Me.ComboBox1.List = b.keys

أود الاستفسار عن هذه الجزئية b.keys ( انا فاهم ان b  تشير الى القاموس ) فماذا تعنى keys

تقبل تحياتى

السلام عليكم

keys جمع key ومهناها مفاتيح

السيغة العامة لتعبئة قاموس Scripting.Dictionary هي key, Item

حيث key هو مفتاح السطر ان سحا التعبير كما هو الحال في ال ListView و جداول الاكسيس

مثال لدينا اسماء اشخاص واعمارهم

      Sub Main()
      Dim keyArray, itemArray, element
      Dim dict As Object
      Set dict = CreateObject("Scripting.Dictionary")
      With dict
         .Add "rabie", 29
         .Add "ali", 33
         .Add "mohamed", 20
         keyArray = .Keys
         
         For Each element In keyArray
            Debug.Print element
         Next
         
         itemArray = .Items
         For Each element In itemArray
            Debug.Print element
         Next
      End With
      Set dict = Nothing
      End Sub

في هذا الجزء

         .Add "rabie", 29
         .Add "ali", 33
         .Add "mohamed", 20

ملئنا بيانات القموس باسماء الاشخاص وهو key و اعمارهم وهي Item

لكي نملء المصفوفة بالمفاتيح مرة واحدة استخدمنا Keys وهو الذي تسال عنه

         keyArray = .Keys

يعني Keys تسمح لنا نقل جميع Key الى مصفوفة او قائمة دفعة واحدة وهذا الشيئ الجميل فيها

اذا اردنا جلب الاسماء الان نستخدم حلقة تكرارية للمصفوفة التي ملئنا بياناتها منذ قليل

         For Each element In keyArray
            Debug.Print element
         Next

واذا اردنا جلب اعمارهم من القاموس نستخدم مصفوفة اخرى لاكن هذه المرة مع Items 

         itemArray = .Items

ونفس الشيئ لطباعت الاعمار نستخدم حلقة تكرارية

         For Each element In itemArray
            Debug.Print element
         Next

لتفريغ القاموس نستعمل

Set dict = Nothing

ارجو ان تكون الفكرة من القواميس قد وصلت لك اخي الصقر

لاتنسى ضغط Ctrl+G  قبل او بعد تنفيذ الكود لروئية النتائج على محرر الاكواد

تحياتي

  • Like 1
قام بنشر

استاذى الفاضل

شوقى ربيع 

جزاكم الله خيرا شرح رائع ومبسط وااستفت منه والله 

بارك الله فيك وزادك علما

تقبل تحياتى

  • Like 1
قام بنشر

اخى

شوقى

قمت باخذ نسخه من الكود

وارفقته فى محور الاكواد فى شيت جديد

ولكن عند الدخول الى الورقه

يحدث الخطأ الاتى

ويقف عند السطر

Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean

ارجو الافاده

قام بنشر

اخى

شوقى

قمت باخذ نسخه من الكود

وارفقته فى محور الاكواد فى شيت جديد

ولكن عند الدخول الى الورقه

يحدث الخطأ الاتى

ويقف عند السطر

Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean

ارجو الافاده

السلام عليكم

هذا لانك لم تدرج كمبوبوكس في الشيت

قام بنشر

لسلام عليكم استاذ شوقي ربيع

 

 

جزاكم الله كل الخير

 

 

 

استاذى الفاضل

شوقى ربيع 

جزاكم الله خيرا شرح رائع ومبسط وااستفت منه والله 

بارك الله فيك وزادك علما

تقبل تحياتى

 

 

 

 

استاذى شوقى ربيع

 

عمل ممتاز  

 

جزاكم الله خيراً

 

 

 

 

روعه ثم روعه ثم روعه

 

جزاكم الله خير وبارك الله فيكم

تحياتي للجميع

قام بنشر

استاذى الفاضل 

شوقى ربيع

لو تسمح لى فى استفسار بسيط

حضرتك اعتمد على تغذية الكمبوبوكس من خلال حدث UserForm_Initialize فتقوم بتعريف a ومن ثم list combox  = a  

فلماذا لا يتم تعريف النطاق وليكن الاصناف   ثم تغذية الكمبوبوكس من row sorce  بخصائص الفورم  وكتابه اسم النطاق وهو الاصناف

وبذالك فى حدث تغيير الكومبو يتم التنبؤ بالقائمه المعرفه وهى الاصناف

تقبل تحياتى

قام بنشر

 

استاذى الفاضل 

شوقى ربيع

لو تسمح لى فى استفسار بسيط

حضرتك اعتمد على تغذية الكمبوبوكس من خلال حدث UserForm_Initialize فتقوم بتعريف a ومن ثم list combox  = a  

فلماذا لا يتم تعريف النطاق وليكن الاصناف   ثم تغذية الكمبوبوكس من row sorce  بخصائص الفورم  وكتابه اسم النطاق وهو الاصناف

وبذالك فى حدث تغيير الكومبو يتم التنبؤ بالقائمه المعرفه وهى الاصناف

تقبل تحياتى

 

السلام عليكم

احسنت السؤال اخي الصقر

ما قلته اخي الصقر صحيح و لاكن ؟؟؟؟

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

فما فعلته عبارة عن فلترة محتوى الكمبوبوكس وهو ما يسمى بالنص التنبئ  كما هو الحال عندما تقوم بالبحث عبر محرك البحث قوقل يجلب لك اقرب الكلمات تبعا للحروف التي تكتبها

اما المتغير a ليس متغير عادي فهو مصفوفة وقد عرفته على كامل الفورم لانه الاساس فس عملية البحث

شكرا على سؤالك القيم واي استفسارات اخرى لا تتردد

تحياتي للجميع

قام بنشر

استاذى الفاضل

شوقى ربيع

يبدو انى لم اوفق فى توضيح ما اريد الاستفسار عنه

انا مش عايز طريقه التنبوء من خلال الفيجوال نفسة لانه بيعرض اسم واحد كما تفضلت

انا عايز طريقة حضرتك ولكن ما كنت اريد الاستفسار عنه هو لما تم تغية الكمبو فى حدث UserForm_Initialize انا فكرتى انى ممكن نعتمد على تعريف النطاق ثم كتابته فى row source   ومن هنا يكون الكود الموجود فى حدث تغيير الكمبو يعمل على النطاق المعرف

وهذا هو الكود حدث الكمبو

Private Sub ComboBox1_Change()
  Set b = CreateObject("Scripting.Dictionary")
  d = UCase("*" & (Me.ComboBox1) & "*")
  For Each c In a
    If UCase(c) Like d Then b(c) = ""
  Next c
  Me.ComboBox1.List = b.keys
  Me.ComboBox1.DropDown
End Sub

وهنا حضرتك عملت حلقه وقلت ان c  فى النطاق a  لماذا لا يتم استبدال a  بالنطاق المعرف

ارجو ان اكون وفقت فى ما اريد الاستفسار عنه

تقبل تحياتى

  • 4 years later...
قام بنشر (معدل)

رائع وجميل جدا يا ريت زي ما قال اخونا الصقر  

الكود رااااائع لكن اريده ان يبحث لي عن كلمات في نطاق من شيت اخر مثال. 

ربيع احمد خالد 

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

انا عاوز لما اكتب اول كلمة او اخر كلمة او عاشر كلمة يجبلي الصف الي فيه الكلمات الي بكتبها وشكرا لك وعلى مجهودك الرائع واجمل ما في الامر الكومبوبوكس المتحرك 

والسلام عليكم 

تم تعديل بواسطه رامي قلعجية
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information