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

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

قام بنشر

السلام عليكم

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

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

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

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

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