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

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

قام بنشر

السلام عليكم اخواني الأعزاء 

سؤال : هل يمكن وضع كود واحد في النموذج لمنع ظهور رسائل الخطاء ؟ حتى لا يقوم المستخدم بالدخول على الاكواد والتعديل او مسحها بالخطاء . حيث ما اعرفه هو انه بالأمكان وضع كود ولاكن لا بد من وضعها مع كل كود تقوم بعملة . وما اريد عمله هو كود واحد لجميع الاكواد التي بالنموذج .

ولكم جزيل الشكر 

  • Like 1
قام بنشر

اولا ، استخدام معالج الاخطاء Error Handler يعطي رسائل موجهة و منسقة للمستخدم تشعره بحدوث خطأ و تعطيه التفاصيل المتاحة

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

ثانيا ، يمكن في بداية كل كود أو في أي مكان مختار ولتعطيل معالج الاخطاء و رسائل النظام ان تستخدم العبارة ( الكود )

On Error Resume Next

و حين ترغب باعادة تفعيل معالج الاخطاء تستخدم مثلا

On Error GoTo PROC_ERR

ويكون في ذيل الكود

PROC_ERR:
  MsgBox "Error " & Err.Number & " " & Err.Description
  Resume PROC_EXIT

ثالثا ، لمعالجة كامل النماذج او التطبيق ، فالامر قيد البحث في مكتبتي ... و اوافيك بالرد

  • Like 3
قام بنشر
  في 12‏/2‏/2018 at 13:03, أبو آدم said:

يقول معظم أهل هذا العلم

أن الاصح ان يحمل كل اجراء معالج الاخطاء الخاص به

شكرا

Expand  

اشكرك استاذنا الكريم

كنت راح افتح موضوع جديد بخصوص استفسار

ورأيت هذا الموضوع يحمل نفس الصلة ولكن بختلاف التفصيل

حيث اني اريد أن استفيد من الخطأ في توجيه البرنامج لاجراء حدث معين

الحدث هو عند فتح النموذج

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

اريد أن احصل على رقم هذا الخطأ لكن لاتظهر لدي سوى ههذه الرسالة

call.png.2b91d21922fe58e20a20a3ca8dde911f.png

قام بنشر

رمز الخطأ 35 

Sub or Function not defined

وهذا رابط البحث عن الحلول عل الانترنت

https://www.google.co.uk/search?q=VBA+Error+35+OR+"Sub+or+Function+not+defined"&gws_rd=ssl

أخي الحبيب لا تظهر لك الرسالة التوضيحية المفصلة برمز الخطأ لان مرسل الرسالة هو VBA وليس معالج الاخطاء الخاص بالاجراء او الكود

و بالتالي يتم تزويدك بالحد الادنى من المعلومات 

  • Like 2
قام بنشر

نعم استاذنا الكريم حاولت استخدام  رمز الخطأ 35 للاستفادة منه في إجراء حدث معين ( اغلاق قاعدة البيانات مثلاً ) 

لكن دون فائدة

هل من طريقة للاستافادة من هذا الخطأ في اغلاق  قاعدة البيانات

قام بنشر

للاسف فان أخطاء Compile Errors يصنفها vba على أنها غير قانونية وبالتالي يتم تمييزها من قبل محرر vba  كأخطاء قبل بدء تشغيل الكود الخاص بك و يبرزها مظللة بالصفر مع رسالة مباشرة من المحرر اعتمادا على إعداد خيار التحقق من بناء الجملة التلقائي  ،  اي انه يتم الكشف عنها عندما يتم تجميع التعليمات البرمجية، قبل تنفيذها مباشرة..

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

لكنني مستمر بالمحاولة باذن الله

  • Like 2
قام بنشر

بعد اذن الاستاذ ابو آدم .. لتحديد الرقم الفريد المقترن برسالة الخطأ اضغط على CTRL + SHIFT + I بعد ظهور رسالة الخطأ 

سوف تظهر لك رقم الرسالة في الركن الأيسر السفلي من رسالة الخطأ

قام بنشر
  في 12‏/2‏/2018 at 21:14, أبو آدم said:

للاسف فان أخطاء Compile Errors يصنفها vba على أنها غير قانونية وبالتالي يتم تمييزها من قبل محرر vba  كأخطاء قبل بدء تشغيل الكود الخاص بك و يبرزها مظللة بالصفر مع رسالة مباشرة من المحرر اعتمادا على إعداد خيار التحقق من بناء الجملة التلقائي  ،  اي انه يتم الكشف عنها عندما يتم تجميع التعليمات البرمجية، قبل تنفيذها مباشرة..

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

لكنني مستمر بالمحاولة باذن الله

Expand  

الله يعطيك العافية استاذنا

  في 13‏/2‏/2018 at 00:49, sandanet said:

بعد اذن الاستاذ ابو آدم .. لتحديد الرقم الفريد المقترن برسالة الخطأ اضغط على CTRL + SHIFT + I بعد ظهور رسالة الخطأ 

سوف تظهر لك رقم الرسالة في الركن الأيسر السفلي من رسالة الخطأ

Expand  

اخي الكريم

تجاوزنا الان رقم الخطأ فقد تم معرفة الرقم 35

الان المطلوب الاستفادة من الخطأ في تنفيذ إجراء محدد ( إغلاق قاعدة البيانات)

قام بنشر

استخدم الكود التالي مع تغيير رقم رسالة الخطأ

Private Sub Form_Error(DataErr As Integer, Response As Integer)
   If DataErr = 3022 Then
    MsgBox "نص رسالة الخطأ", vbCritical, "..رسالة خطأ.."
    Docmd....
    Response = 0
   End If
End Sub

 

قام بنشر
  في 13‏/2‏/2018 at 08:23, sandanet said:

استخدم الكود التالي مع تغيير رقم رسالة الخطأ

Private Sub Form_Error(DataErr As Integer, Response As Integer)
   If DataErr = 3022 Then
    MsgBox "نص رسالة الخطأ", vbCritical, "..رسالة خطأ.."
    Docmd....
    Response = 0
   End If
End Sub

 

Expand  

للاسف لم يأتي بنتيجة

قام بنشر

إذا كانت أخطاء المحرر لايمكن إختابارها داخل محرر الشفرة؛ فأعتقد أنه من الممكن تصيدها باستخدام الوظيفة ()Eval، إذ أن هذه الوظيفة مهمتها الأساسية هي تقييم التعابير وإعادة النتايج التي تخرج عن تلك التعابير؛فاذا كانت التعبير يحتوي على وظائف وإجراءات مفقودة فإن الوظيفة ()Eval ستعيد رسالة خطأ بالرقم 2425 مفادها "يحتوي التعبير على وظيفة مفقودة".. وبهذا نكون سحبنا الخطأ إلى داخل محرر الشفره وبالتالي يمكننا تصيده بالطريقة المعتادة..

Control VBE Error.accdbFetching info...

  • Like 1
  • Thanks 2
قام بنشر (معدل)
  في 13‏/2‏/2018 at 15:39, أبو إبراهيم الغامدي said:

إذا كانت أخطاء المحرر لايمكن إختابارها داخل محرر الشفرة؛ فأعتقد أنه من الممكن تصيدها باستخدام الوظيفة ()Eval، إذ أن هذه الوظيفة مهمتها الأساسية هي تقييم التعابير وإعادة النتايج التي تخرج عن تلك التعابير؛فاذا كانت التعبير يحتوي على وظائف وإجراءات مفقودة فإن الوظيفة ()Eval ستعيد رسالة خطأ بالرقم 2425 مفادها "يحتوي التعبير على وظيفة مفقودة".. وبهذا نكون سحبنا الخطأ إلى داخل محرر الشفره وبالتالي يمكننا تصيده بالطريقة المعتادة..

Control VBE Error.accdbFetching info...

Expand  

استاذنا ابو ابراهيم :fff:

النتائج ممتازة

الله يعطيك ألف عافية

تم تعديل بواسطه kaser906

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