التعليمات البرمجية ل VBA "خلف" قد لا تعمل ورقه العمل أو المصنف في Excel


بالنسبة إلى إصدار Microsoft Excel 97 من هذه المقالة ، راجع 157346 .بالنسبة إلى إصدار Microsoft Excel 98 من هذه المقالة ، راجع 182482 .

الأعراض


في Microsoft Office Excel ، فان التعليمات البرمجية لماكرو Microsoft Visual Basic for Application (VBA) التي تحتوي علي "الخلف" ورقه عمل أو مصنف قد لا تعمل بشكل صحيح.

السبب


سيحدث هذا إذا تحققت كلا الشرطين التاليين:
  • التعليمات البرمجية الخاصة بالسؤال مضمنه داخل روتين فرعي يتم تشغيله تلقائيا ، مثل Auto_Open أو Auto_Close روتين فرعي.
  • التعليمات البرمجية غير مضمنه في وحده نمطيه ل Visual Basic ، ولكن "خلف" ورقه عمل أو مصنف نفسه.

الحل البديل


لكي يعمل سوبروتينيس تلقائيا بشكل صحيح في Microsoft Excel ، يجب ان يتم تضمينه في الوحدة النمطية Visual Basic. يجب ادراج وحده نمطيه ل Visual Basic في المصنف ، ثم ضع التعليمات البرمجية في الوحدة النمطية الجديدة. لادراج وحده نمطيه ل Visual Basic:
  1. في "مستكشف المشاريع " في "محرر Visual Basic" ، قم بتنشيط المصنف الذي يحتوي علي التعليمات البرمجية المطلوبة.
  2. من القائمة Insert (إدراج)، انقر فوق Module (وحدة نمطية).
بعد ادراج الوحدة النمطية الجديدة ، قم بقص التعليمات البرمجية من موقعها الأصلي وألصقها في الوحدة النمطية ل Visual Basic. ثم احفظ المصنف.

مزيد من المعلومات


في Excel ، يمكن تخزين التعليمات البرمجية ل VBA في ثلاثه مواقع مختلفه: في الوحدة النمطية Visual Basic ، في الوحدة النمطية ل visual Basic ، وأوراق العمل والمصنفات. لتحرير التعليمات البرمجية "خلف" ورقه عمل أو مصنف:
  1. تنشيط محرر Visual Basic (اضغط علي ALT + F11).
  2. في نافذه مستكشف المشاريع ، ستري الإدخالات مماثله لما يلي:
         VBAProject (Book1)         Microsoft Excel Objects            Sheet1 (Sheet1)            Sheet2 (Sheet2)            Sheet3 (Sheet3)            ThisWorkbook                  Modules             Module1 
إذا نقرت نقرا مزدوجا فوق أحد أسماء أوراق العمل أو ThisWorkbook، فيمكنك كتابه الرمز في نافذه التعليمات البرمجية. ان مثل هذه التعليمات البرمجية غير المضمنة في الوحدة النمطية Visual Basic هي "خلف" ورقه العمل أوالThisWorkbook . إذا تم تخزين الروتين الفرعي Auto_Openأو Auto_Closeأو الآخر الذي يتم تشغيله تلقائيا "في الخلف " ورقه عمل أو ThisWorkbook، فقد لا يعمل بشكل صحيح عند فتح المصنف أو إغلاقه ، أو عند تنفيذ اجراء يجب ان يؤدي إلى تشغيل الروتين الفرعي.