شامل2 قام بنشر أبريل 2, 2016 قام بنشر أبريل 2, 2016 السلام عليكم ظهرت هذه الرسالة في اثناء كتابة دالة الفيجوال بيسك هل يمكن انشاء دالة اخرى واستدعائها وفق شرط في الدوالة الاولى. نفرض ان الدالة الاولى اسمها Function CalTh(a, x, y, d, e) As Variant هل يمكن عمل دالة ثانية باسم Function CalTh2 وجعل الشرط وفق قيمة a
ياسر خليل أبو البراء قام بنشر أبريل 2, 2016 قام بنشر أبريل 2, 2016 أخي الكريم نعم يمكن استدعاء دالة ضمن دالة أخرى فالدوال والأكواد ترتبط ببعضها داخل محرر الأكواد .. هل الشروط كثيرة جداً في السطر الواحد ..أعتقد الرسالة سببها ذلك الأمر .. يمكنك تقسيم السطر الطويل باستخدام الشرطة السفلية في نهاية الجملة وتكملة السطر في السطر التالي ارفق الملف لكي نفيدك بشكل أفضل تقبل تحياتي 1
شامل2 قام بنشر أبريل 2, 2016 الكاتب قام بنشر أبريل 2, 2016 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 ولكن لا يتم استدعائها السلام عليكم اخي العزيز يظهر هذا الخطأ
ياسر خليل أبو البراء قام بنشر أبريل 2, 2016 قام بنشر أبريل 2, 2016 لما لا تقوم بجمع الشروط في دالة واحدة؟! صراحة لم أجرب قبل استدعاء دالة من دالة أخرى ، رغم أنه من المنطقي أن تتم بسهولة ، ربما الخطأ يرجع إلى أنك تستخدم نفس المتغيرات في الدالتين .. طيب جرب تغير في المتغيرات في الدالة الثانية يعني بدلاً من a, x, y, d, e خليها a1,x1,y1,d1.e1 2
شامل2 قام بنشر أبريل 2, 2016 الكاتب قام بنشر أبريل 2, 2016 4 دقائق مضت, ياسر خليل أبو البراء said: لما لا تقوم بجمع الشروط في دالة واحدة؟! صراحة لم أجرب قبل استدعاء دالة من دالة أخرى ، رغم أنه من المنطقي أن تتم بسهولة ، ربما الخطأ يرجع إلى أنك تستخدم نفس المتغيرات في الدالتين .. طيب جرب تغير في المتغيرات في الدالة الثانية يعني بدلاً من a, x, y, d, e خليها a1,x1,y1,d1.e1 لا زالت نفس المشكلة؟
ياسر خليل أبو البراء قام بنشر أبريل 2, 2016 قام بنشر أبريل 2, 2016 إذاً فلتقم بجمع الشروط في دالة واحدة .. رغم أنني جربت استخدام كلمة Call للاستدعاء .. ونجح الأمر Function Test() Call Hello Test = Application.UserName End Function Function Hello() MsgBox "Hello" End Function يبدو أن هناك تعارض في الشروط
شامل2 قام بنشر أبريل 2, 2016 الكاتب قام بنشر أبريل 2, 2016 هذا الملف المرفق الورقة1 عندما يكون الراتب 5730000 1.rar
ياسر خليل أبو البراء قام بنشر أبريل 2, 2016 قام بنشر أبريل 2, 2016 بالنسبة للسطر الذي يظهر فيه الخطأ ألا وهو Call CalTh2 طالما أن الدالة لها بارامترات فلابد من كتابة البارامترات الخاصة بالدالة .. أقترح عليك محاولة عمل ورقة عمل تدرج فيها جدول بالشروط بدلاً من هذا الكم الهائل من الشروط .. 1
شامل2 قام بنشر أبريل 3, 2016 الكاتب قام بنشر أبريل 3, 2016 7 ساعات مضت, ياسر خليل أبو البراء said: بالنسبة للسطر الذي يظهر فيه الخطأ ألا وهو Call CalTh2 طالما أن الدالة لها بارامترات فلابد من كتابة البارامترات الخاصة بالدالة .. أقترح عليك محاولة عمل ورقة عمل تدرج فيها جدول بالشروط بدلاً من هذا الكم الهائل من الشروط .. السلام عليكم هل من سبيل الى طريقة في ايجاد الخطأ؟
ياسر خليل أبو البراء قام بنشر أبريل 3, 2016 قام بنشر أبريل 3, 2016 وعليكم السلام لقد أخبرتك أن الدالة لها بارامترات ولابد من إدخال البارامترات الخاصة بها أقترح عليك عمل جدول بالشروط كلها في ورقة عمل واستخدام دالة Vlookup أو Index .. أو قم بجمع كل الشروط الممكنة في خلية لتكون جدول يمكنك الاعتماد عليه .. لابد من أن هناك لتبسيط الأمر اطرح شروطك لعلنا نجد طريقة لمساعدتك بها 1
شامل2 قام بنشر أبريل 3, 2016 الكاتب قام بنشر أبريل 3, 2016 السلام عليكم اشكر اخي العزيز ياسر خليل أبو البراء الحمد لله تم التغلب على المشكلة وايجاد الحل باستخدام الصيغة IF(B4<573000;CalTh(B4;C4;D4;E4;F4);CalTh2(B4;C4;D4;E4;F4))= وجاري العمل لاكمال الدالة الثانية. 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.