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

التغلب على رسالة في دالة الفجيوال بيسك


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

السلام عليكم

ظهرت هذه الرسالة في اثناء كتابة دالة الفيجوال بيسك

هل يمكن انشاء دالة اخرى واستدعائها وفق شرط في الدوالة الاولى.

نفرض ان الدالة الاولى اسمها

Function CalTh(a, x, y, d, e) As Variant

هل يمكن عمل دالة ثانية باسم  Function CalTh2

وجعل الشرط وفق قيمة a

8989.jpg

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

أخي الكريم

نعم يمكن استدعاء دالة ضمن دالة أخرى فالدوال والأكواد ترتبط ببعضها داخل محرر الأكواد ..

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

ارفق الملف لكي نفيدك بشكل أفضل

تقبل تحياتي

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

8 دقائق مضت, ياسر خليل أبو البراء said:

أخي الكريم

نعم يمكن استدعاء دالة ضمن دالة أخرى فالدوال والأكواد ترتبط ببعضها داخل محرر الأكواد ..

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

ارفق الملف لكي نفيدك بشكل أفضل

تقبل تحياتي

السلام عليكم

الاخ العزيز

كنت على انتظارك منذ 4 ساعات

عملت هذه الدالة

Function CalTh(a, x, y, d, e) As Variant
If a < 566000 Then

بالاعتماد على قيمة a

يتم تنفيذ الشروط التي تاتي بعد then

وتعمل بالشكل الصحيح

 وعندما لا يتحقق الشرط المفروض يتم استدعاء الدالة

وكما في :

                                              Else
                    Call CalTh2

                                End If

                             End Function            

علما ان CalTh2  هي دالة ثانية

Function CalTh2(a, x, y, d, e) As Variant

ولكن لا يتم استدعائها

السلام عليكم

اخي العزيز

يظهر هذا الخطأ

 

55555555.jpg

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

لما لا تقوم بجمع الشروط في دالة واحدة؟!

صراحة لم أجرب قبل استدعاء دالة من دالة أخرى ، رغم أنه من المنطقي أن تتم بسهولة ، ربما الخطأ يرجع إلى أنك تستخدم نفس المتغيرات في الدالتين ..

طيب جرب تغير في المتغيرات في الدالة الثانية يعني بدلاً من a, x, y, d, e خليها a1,x1,y1,d1.e1

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

4 دقائق مضت, ياسر خليل أبو البراء said:

لما لا تقوم بجمع الشروط في دالة واحدة؟!

صراحة لم أجرب قبل استدعاء دالة من دالة أخرى ، رغم أنه من المنطقي أن تتم بسهولة ، ربما الخطأ يرجع إلى أنك تستخدم نفس المتغيرات في الدالتين ..

طيب جرب تغير في المتغيرات في الدالة الثانية يعني بدلاً من a, x, y, d, e خليها a1,x1,y1,d1.e1

لا زالت نفس المشكلة؟

 

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

إذاً فلتقم بجمع الشروط في دالة واحدة ..

رغم أنني جربت استخدام كلمة Call للاستدعاء .. ونجح الأمر

Function Test()
    Call Hello
    Test = Application.UserName
End Function

Function Hello()
    MsgBox "Hello"
End Function

يبدو أن هناك تعارض في الشروط

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

بالنسبة للسطر الذي يظهر فيه الخطأ ألا وهو

Call CalTh2

طالما أن الدالة لها بارامترات فلابد من كتابة البارامترات الخاصة بالدالة ..

أقترح عليك محاولة عمل ورقة عمل تدرج فيها جدول بالشروط بدلاً من هذا الكم الهائل من الشروط ..

 

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

7 ساعات مضت, ياسر خليل أبو البراء said:

بالنسبة للسطر الذي يظهر فيه الخطأ ألا وهو


Call CalTh2

طالما أن الدالة لها بارامترات فلابد من كتابة البارامترات الخاصة بالدالة ..

أقترح عليك محاولة عمل ورقة عمل تدرج فيها جدول بالشروط بدلاً من هذا الكم الهائل من الشروط ..

 

السلام عليكم

هل من سبيل الى طريقة في ايجاد الخطأ؟

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

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

لقد أخبرتك أن الدالة لها بارامترات ولابد من إدخال البارامترات الخاصة بها

أقترح عليك عمل جدول بالشروط كلها في ورقة عمل واستخدام دالة Vlookup أو Index ..

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

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

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

السلام عليكم

اشكر اخي العزيز

ياسر خليل أبو البراء

الحمد لله تم التغلب على المشكلة وايجاد الحل

باستخدام الصيغة

IF(B4<573000;CalTh(B4;C4;D4;E4;F4);CalTh2(B4;C4;D4;E4;F4))=

وجاري العمل لاكمال الدالة الثانية.

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information