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

البحث في القائمة المنسدلة ذات أكثر من عمود (النص التنبئي)


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

بسم الله الرحمان الرحيم

السلام عليكم

تكملة لموضوع النص التنبئي على الكمبوبوكس

http://www.officena....showtopic=59463

الموضوع السابق ذكره تم التطرق الى البحث داخر القائمة المنسدلة ذات عمود واحد

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

تم عمل مثالين توضيحين

الاول مطبق على الشيت

ws.png

 

اما الثاني مطبق على الفورم

frm.png

 

وكلاهما لهم نفس الوضيفة انما تم عمل المثالين ليتكون الفكرة وضحة واشمل

في الاخير ارجو من الاعضاء تقديم ارائهم و ملاحضاتهم لنطور الموضوع اكثر ونصل الى افضل النتائج

معا لرفع المستوى

*******************

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

تم تغير المرفق بعد 12 تحميل

النص التنبئي.rar

  • Like 3
رابط هذا التعليق
شارك

اخى واستاذنا شوقى

فيه بس مشكله بسيطه بتحدث

وهى ايه

انه عند الضغط على زر اوك

بدون الكتابه داخل الكوموبوكس يحدث خطأ

وفيه كمان

ان عند الكتابه داخل الكوموبوكس اكثر من حرف

بردو بيحدث خطأ

واعتقد ان الخطأ فى عد اضافة

On Error Resume Next

ولكنى طبعا مستنى تعديلك

فانت دائما لديك الجديد

تقبل تحياتى

  • Like 1
رابط هذا التعليق
شارك

اخى واستاذنا شوقى

فيه بس مشكله بسيطه بتحدث

وهى ايه

انه عند الضغط على زر اوك

بدون الكتابه داخل الكوموبوكس يحدث خطأ

وفيه كمان

ان عند الكتابه داخل الكوموبوكس اكثر من حرف

بردو بيحدث خطأ

واعتقد ان الخطأ فى عد اضافة

On Error Resume Next

ولكنى طبعا مستنى تعديلك

فانت دائما لديك الجديد

تقبل تحياتى

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

هدا  ما اريده بضبط من كل الاعضاء اعطاء ارائهم واستفسارتهم وتعقيباتهم لكي نحسن من مواضيعنا ونطورها اكثر

تم حل المشكلة وتم تغير المرفق في المشاركة الاصلية

رابط هذا التعليق
شارك

لم يعمل هذا الملف أيضا معي .. ايه حكاية الأوفيس عندك ؟

ولا المشكلة عندي أنا ..

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

على العموم عدلت الملف من جهاز اخر وتم رفع الملف من جديد

رابط هذا التعليق
شارك

ياعمنا شوقى

الله يهديك

المرفق مش مرفق خالص

ولا انت طمعت فيه ولا ايه الحكايه

تقبل تحياتى

هههه

ميغلاش عليكم غالي استادنا ابراهم

المرفق موجود

  • Thanks 1
رابط هذا التعليق
شارك

 

اخى واستاذنا شوقى

فيه بس مشكله بسيطه بتحدث

وهى ايه

انه عند الضغط على زر اوك

بدون الكتابه داخل الكوموبوكس يحدث خطأ

وفيه كمان

ان عند الكتابه داخل الكوموبوكس اكثر من حرف

بردو بيحدث خطأ

واعتقد ان الخطأ فى عد اضافة

On Error Resume Next

ولكنى طبعا مستنى تعديلك

فانت دائما لديك الجديد

تقبل تحياتى

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

هدا  ما اريده بضبط من كل الاعضاء اعطاء ارائهم واستفسارتهم وتعقيباتهم لكي نحسن من مواضيعنا ونطورها اكثر

تم حل المشكلة وتم تغير المرفق في المشاركة الاصلية

 

اخى شوقى

يتم التاكيد على حدوث نفس الخطأ

يرجى اعادة رفع الملف الصحيح

تقبل تحياتى

رابط هذا التعليق
شارك

 

 

اخى واستاذنا شوقى

فيه بس مشكله بسيطه بتحدث

وهى ايه

انه عند الضغط على زر اوك

بدون الكتابه داخل الكوموبوكس يحدث خطأ

وفيه كمان

ان عند الكتابه داخل الكوموبوكس اكثر من حرف

بردو بيحدث خطأ

واعتقد ان الخطأ فى عد اضافة

On Error Resume Next

ولكنى طبعا مستنى تعديلك

فانت دائما لديك الجديد

تقبل تحياتى

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

هدا  ما اريده بضبط من كل الاعضاء اعطاء ارائهم واستفسارتهم وتعقيباتهم لكي نحسن من مواضيعنا ونطورها اكثر

تم حل المشكلة وتم تغير المرفق في المشاركة الاصلية

 

اخى شوقى

يتم التاكيد على حدوث نفس الخطأ

يرجى اعادة رفع الملف الصحيح

تقبل تحياتى

 

ارجو الافاده

رابط هذا التعليق
شارك

 

 

 

اخى واستاذنا شوقى

فيه بس مشكله بسيطه بتحدث

وهى ايه

انه عند الضغط على زر اوك

بدون الكتابه داخل الكوموبوكس يحدث خطأ

وفيه كمان

ان عند الكتابه داخل الكوموبوكس اكثر من حرف

بردو بيحدث خطأ

واعتقد ان الخطأ فى عد اضافة

On Error Resume Next

ولكنى طبعا مستنى تعديلك

فانت دائما لديك الجديد

تقبل تحياتى

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

هدا  ما اريده بضبط من كل الاعضاء اعطاء ارائهم واستفسارتهم وتعقيباتهم لكي نحسن من مواضيعنا ونطورها اكثر

تم حل المشكلة وتم تغير المرفق في المشاركة الاصلية

 

اخى شوقى

يتم التاكيد على حدوث نفس الخطأ

يرجى اعادة رفع الملف الصحيح

تقبل تحياتى

 

ارجو الافاده

 

السلام عليكم

لديا مشكلة في الاوفيس عندي

ساحاول الوصول الى جهاز اخر وارفع الملف

رابط هذا التعليق
شارك

وأااااااااااو

هو فيه كده ياجدعان

 

 

استاذ شوقي .. حقا أبدعت ، جزاك الله كل خير

 

 

ما شاء الله

ابداع يفوق الخيال ولا فى الاحلام

جزاك الله كل خير وجعله فى ميزان حسناتك

 

 

رررررررررررررررررررائع اخي شوقي

 

 

 

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

شوقى ربيع 

أبداع منقطع النظير

تقبل تحياتى

 

 

 

السلام عليكم ورحمة الله

الاستاذ شوقي الملف يعمل عندي

أوفيس 2013

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

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

رابط هذا التعليق
شارك

اخى شوقى

بالفعل

الملف يعمل بصوره جيده جدا

ولكن

فى المره الاولى عند حدوث الخطأ

استعنت انا بالكود

On Error Resume Next

فهل بالفعل هذا السطر له علاقه

بحل المشكله ام لا

-----------------------------------------------------

الاهم اخى الكريم

ماذ لو اردنا التطور اكثر فاكثر

.........................................

ماذا لو كان لدينا اكثر من عمود

نريد البحث فيه

العمود الاول مثلا

يكون البحث بالاسم

العمود الثالث

بحث برقم الموظف

العمود السادس

بحث

برقم السياره

-----------------------------------

تقبل تحياتى

رابط هذا التعليق
شارك

اخي ابو ليله

On Error Resume Next

عند استخدامه فأنت تقول للفيوجال ابتداءا من هذا السطر وعندما يقابلك اي خطاء تخطاه وانتقل لسطر الذي بعده

وشخطيا لا احبذ استخدامه الا لضرورة القصوى

الخطاء في الملف كان كا الاتي

اولا نشرح الكود المستعمل لكي تفهم الامر

الكود ببساطة يعتمد على المصفوفات

كما تلاحظ المصفزفة Ary هي مصفوفة الرئيسية التي خزنا فيها كامل بيانات الداتا

Ary = ws.Range("A2:D" & lrw).Value

ثم انشئة مصفوفة اخرى Aryy  من اجل البحث عن القيم من المصفوفة الاولة و تخزين النتائج المطابقة لشرط البحث فيها

     For i = LBound(Ary) To UBound(Ary)
       If UCase(Ary(i, 1)) Like d Then
         e = e + 1: ReDim Preserve Aryy(1 To 3, 1 To e)
         Aryy(1, e) = Ary(i, 1)
         Aryy(2, e) = Ary(i, 2)
         Aryy(3, e) = Ary(i, 3)
       End If
      Next i

حيث

LBound(Ary) هو الحد الاول للمصفوفة

 UBound(Ary) الحد الاخير للمصفوفة

If UCase(Ary(i, 1)) Like d Then

هو شرط البحث حيث

d = UCase(Me.ComboBox1) & "*"

اي ما يكتب داخل الكمبوبوكس

واستعملنا هذا السطر

ReDim Preserve Aryy(1 To 3, 1 To e)

لتغيير حجم المصفوفة الثانية دون فقدان البيانات التي تحويها

لاننا نعتمد على الحلقات التكرارية في البحث

فكما تلاحظ كل ما يتحقق الشرط نملئ المصفوفة الثانية بالبيانات التي حققت الشرط

وذالك في الاسطر

         Aryy(1, e) = Ary(i, 1)
         Aryy(2, e) = Ary(i, 2)
         Aryy(3, e) = Ary(i, 3)

كل سطر يملئ احد اعمدة المصفوفة علما من انا مصفوفتنا مكونة من ثلاثة اعمدة

اما المتغير e ما فائدتة ؟

فائدته هي معرفة عدد اسطر المسفوفة الثانية فعند اكتمال دورة الحلة التكرارية والخروج منها المتغير e ينبانا بعدد الاسطر التي خزنت في المصفوفة الثانية

وما فائدت هذا الكلام ؟

فائدته هي

حسب الكود التالي

      If e > 0 Then
        If UBound(Aryy, 2) > 1 Then
          Me.ComboBox1.List = Application.Transpose(Aryy)
        Else
          Dim c(1 To 1, 1 To 3)
          c(1, 1) = Aryy(1, 1)
          c(1, 2) = Aryy(2, 1)
          c(1, 3) = Aryy(3, 1)
          Me.ComboBox1.List = c
        End If
        Me.ComboBox1.DropDown
      End If

If e > 0 Then

يعندي ان عدد اسطر المسفوفة الثانية ميسويش الصفر

بعده ادرجنا السطر الثاني

 If UBound(Aryy, 2) > 1 Then

وهو ايضا عبارة عن شرط ومعناه انه ادذا كان عدد اسطر المصفوفة الثانية اكثر من سطر ف

 Me.ComboBox1.List = Application.Transpose(Aryy)

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

وهذه النتيجة تكون عندما يكون لدينا اكثر من صنف لهم نفس اول الاحرف

اما اذا كان عدد اسطر المصفوفة الثانية يساوي الواحد مالذي سيحدث ؟

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

اذا استعنا بمصفوفة ثالثة اسميناها c لاكنها ليست كا لمصفوفتين السابقتين

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

Dim c(1 To 1, 1 To 3)

ثما قمنا بتعبئة المصفوفة الثالثة بالبيانات التي حصلنا عليها في المصفوفة الثانية (ولا تنسى انها تحوي على سطر واحد في هذه الحالة)

          c(1, 1) = Aryy(1, 1)
          c(1, 2) = Aryy(2, 1)
          c(1, 3) = Aryy(3, 1)

ثم قمنا بنقل محتوى المصفوفة الثالثة الى الكمبوبوكس

.

.

.

.

اذا بعد شرح الكود اين الخطاء الذي كان من قبل في الملف الاول

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

          Dim c(1 To 1, 1 To 2)
          c(1, 1) = Aryy(1, 1)
          c(1, 2) = Aryy(2, 1)
          c(1, 3) = Aryy(3, 1)

وهذا خطاء لاننا نحاول تعباة مصفوفة ذات سطرين بثلاثة اسطر

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

Dim c(1 To 1, 1 To 2)

بدل ثلاثة اسطر

Dim c(1 To 1, 1 To 3)

.

.

.

.

(ماذ لو اردنا التطور اكثر فاكثر)

الامر ابسط مما تتصور

فقط نزيد في ابعاد المصفوفات المستعملة في الكود

هذا مثال ل سبعة اعمدة

     For i = LBound(Ary) To UBound(Ary)
       If UCase(Ary(i, 1)) Like d Then
         e = e + 1: ReDim Preserve Aryy(1 To 7, 1 To e)
         Aryy(1, e) = Ary(i, 1)
         Aryy(2, e) = Ary(i, 2)
         Aryy(3, e) = Ary(i, 3)
         Aryy(4, e) = Ary(i, 4)
         Aryy(5, e) = Ary(i, 5)
         Aryy(6, e) = Ary(i, 6)
         Aryy(7, e) = Ary(i, 7)
       End If
      Next i
      
      If e > 0 Then
        If UBound(Aryy, 2) > 1 Then
          Me.ComboBox1.List = Aryy 'Application.Transpose(Aryy)
        Else
          Dim c(1 To 1, 1 To 7)
          c(1, 1) = Aryy(1, 1)
          c(1, 2) = Aryy(2, 1)
          c(1, 3) = Aryy(3, 1)
          c(1, 4) = Aryy(4, 1)
          c(1, 5) = Aryy(5, 1)
          c(1, 6) = Aryy(6, 1)
          c(1, 7) = Aryy(7, 1)
          Me.ComboBox1.List = c
        End If
        Me.ComboBox1.DropDown
      End If
    Else

في الاخير ارجو ان يكون الشرح مفهوم واي استفسارات اخرى لاتتردد في السؤال

تحياتي لجميع

رابط هذا التعليق
شارك

بسم الله ما شاء الله أخي شوقي موسوعة ....

في انتظار حلقة منك لشرح المصفوفات Arrays من البداية نظراً لأهميتها القصوى وفائدتها الكبيرة وقلة علمنا بها

رابط هذا التعليق
شارك

بسم الله ما شاء الله أخي شوقي موسوعة ....

في انتظار حلقة منك لشرح المصفوفات Arrays من البداية نظراً لأهميتها القصوى وفائدتها الكبيرة وقلة علمنا بها

غالي والطلب رخيس من عنيا الاثنين

فقط يتاح لي بعض الوقت وساعمل على الموضوع

تحياتي

رابط هذا التعليق
شارك

اخى واستاذنا شوقى

الشرح وافى

جدا

والموضوع بجد اكبر

فكما قال اخانا ياسر

اننا لدينا قله فى المعلومات عن المصفوفات

ولكن انا لدى جهل بها

فى انتظار الدرس ان شاء الله

تقبل تحياتى

رابط هذا التعليق
شارك

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

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

Important Information