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

أين أكتب / أضع الكود [إستفسار]


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

بسم الله الرحمن الرحيم

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

كان لدي سؤال عن كتابة اكواد الفيجوال بيسك في الإكسل

حين انتقل لل VBE يوجد لدي عدة إختيارات لموضع كتابة الأكواد وهم

  • Module
  • Sheet
  • ThisWorkbook

فما الفرق الذي يحدث إذ ادرجت الكود في اى عنصر من العناصر السابقة؟

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

Module لكتابة كود منفصل يمكن استدعاؤه من أى مكان

Sheet كود مخصص لأحداث الصفحة كحدث تنشيط activate الصفحة أو حدث التغيير change " تغيير قيمة أى خلية " وغيرهما

ThisWorkbook أكواد تنفذ فى أحداث المصنف و هذه تشمل طبعا كل الشيتات و يمكن أن نضع فيه كودا ينفذ فى أحد الصفحات لكن ينفذ عند أحد أحداث المصنف

فالكود واحد فى الثلاثة

لكن الحدث مختلف لارتباطه بأحد الأنواع

وكمثال عملى :

الكود

range("a1")="kemas"
نضعه فى Module و نخصص له زر أمر ينفذه هذا الزر فى أحد الصفحات طبعا أو حتى فى نموذج " فورم" نضعه فى أحد أحداث شيت معين و ليكن الحدث activate فعند تنشيط هذه الصفحة يتم تنفيذ الكود فى الخلية المحددة " انتبه لحدث التنفيذ" و نضعه فى ThisWorkbook فسينفذ عند فتح المصنف و لذلك يجب أن نزيد عليه اسم الورقة التى بها الخلية المقصودة فيصير
sheets(1).range("a1")="kemas"

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

عند فتح المصنف

وفى الورقة رقم 1

والخلية a1 فيها

هذا ما تيسر لى شرحه الآن

أرجو أن تكون انتفعت بذلك

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

الأخ zine pef بارك الله فيك و شكرا لك

الأخ new4a شكرا لك و بارك الله فيك

أحببت أن أضيف أنه لابد لمن يكتب الأكواد أن يجيب عن سؤالين

الأول أين سينفذ الكود ( مصنف ورقة نموذج أداة تحكم " كنترول " .."

الثانى : متى سينفذ الكود ؟

و هذا يقصد به الحدث

فتكون الإجابة مثلا:

فى المصنف - عند فتحه

فى الشيت عند تنشيطه

فى الشيت عند تغيير قيمة أى خلية

فى الشيت عند حساب الورقة

فى النموذج عند تشغيله

فى مربع النص عند الكتابة فيه

فى الليست بوكس عند تحديد قيمة فيها

فى الصورة عند مرور الماوس عليها

و هكذا

أما إجابة السؤال الأول فتكون فى القسم الأيسر من القائمة

وأما الحدث فيكون فى القسم الثانى على اليمين

الصورة

code.jpg

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

الأخ العزيز كيماس

تحية وشكر وتقدير

مبدع دائماً فى شرحك

هل تسمح بترجمة جميع الأحداث الموجودة فى القائمة المنسدلة ؟؟

قد يفيد ذلك بعض المبتدئين أمثالى

وكذلك فى القائمة المنسدلة الأخرى (مكان تنفيذ الكود) توجد خيارات متعددة

أرجو ترجمتها مع شرح كل إختيار

جازاك الله خير

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

أستاذ / كيماس

جزاك الله خيراً على هذ هالمعلومات القيمة، جعلها في ميزان حسناتك بإن الله

بعض الأسئلة

  • آلا يمكن تنفيذ كود مدرج في Module عند وقوع حدث معين مرتبط بأحد الأحداث الخاصة بالشيت أو بملف الإكسل ذاته
    Sheets("Sheet 02").Range("a2").Value = 111


    فهل يمكن تنفيذه عند تنشيط ورقة العمل 1

    • إذا كان من الممكن أن أدرج كود في العنصر ThisWorkbook وسيتم تنفيذه على اى شيت في ملف الإكسل (حسب الكود المكتوب طبعاً) فمتى الجأ لكتابة الكود في الموديل

    بطريقة أخرى هل لكتابة الكود في الموديل مميزات عن كتابة الكود في العنصر ThisWorkboo

    شكراً مرة أخرى على سرعة التجاوب

تم تعديل بواسطه al m3tasem
رابط هذا التعليق
شارك

مرحبا أخ يوسف

إذا ضربت عدد الأماكن فى الأحداث الخاصة بكل منها

سينتج عدد كبير من العناصر

لكن سأذكر لك أهم حدث فى كل عنصر

بالنسبة للورقة الشيت أهم حدث هو التنشيط activate و التغيير change

أما الفورم فأهم أحداثه حدث انطلاق الفورم يعنى تشغيله initialize وفى هذا الحدث نضع كل ما نريد تنفيذه على أدوات التحكم كمربعات النصوص و غيرها و كذلك تحديد المدى من الخلايا أو الأكثر و كثير جدا بحيث يكون كل هذا ظاهرا و جاهزا عند انطلاق الفورم

بالنسبة للأدوات

زر الأمر حدثه الأهم و الافتراضى هو النقر click

أما مربع النص فأهم أحداثه change التغيير

و هذا لا يقلل من أهمية الأحداث الأخرى فأنت تحتاج إليها حسب الكود الذى تكتبه

و هناك أحداث يندر استعمالها مثل presskey وهو مختص بضغط أى زر من لوحة المفاتيح

إذا وضعت فى ذهنك السؤالين اللذين شرحناهما

ستزيد قدرتك على فهم الأكواد المكتوبة

أما ما سيقابلك من أحداث جديدة عليك فشأنها سهل

لأن القاعدة العامة موجودة

و الله أعلم

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

أخى معتصم

الكود المكتوب فى المودويل غير مرتبط بعنصر ( ورقة أو مصنف ....)

و غير مرتبط بحدث

لكن هذا لا يمنع أن نشير من داخله لأى من هذه العناصر نشير لورقة أو فورم

مثلا

userform1.show

كود يستدعى نموذج

هذه وظيفته

يمكنك إسناده لزر أمر بحيث ينفذ عند نقر الزر مثلا

كما يكتب بالمودويل الوظائف التى يمكن استدعاؤها بدلالة اسمها و معاملاتها

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

شكراً استاذ / كيماس على التجاوب

لكن اريد ان اعرف

  • إذا كان من الممكن أن أدرج كود في العنصر ThisWorkbook وسيتم تنفيذه على اى شيت في ملف الإكسل (حسب الكود المكتوب طبعاً) فمتى بتم اللجوء لكتابة الكود في الموديل بطريقة أخرى هل لكتابة الكود في الموديل مميزات عن كتابة الكود في العنصر ThisWorkboo

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

إذا كان من الممكن أن أدرج كود في العنصر ThisWorkbook وسيتم تنفيذه على اى شيت في ملف الإكسل

نعم ممكن

وميزة ذلك أن يتم التنفيذ مع أحد أحداث المصنف ككل و ليس الشيت

مثال

الكود التالى يؤدى مهمتين

الأولى تجميد الشاشةفى شيت الرئيسة و هو أحد شيتات المصنف

الثانية

يبدأ فتح الملف على شيت الرئيسة دون غيره

Private Sub Workbook_Open()


   Sheets("الرئيسة").ScrollArea = "a1:c10"


      'If ActiveSheet.CodeName <> "الرئيسة" Then

      Sheets("الرئيسة").Select

      'End If


End Sub

هنا المطلوب التحكم فى شيت و مواصفاته

فالسبيل إلى ذلك هو أبو الشيت

أقصد الأعلى منه فى المستوى و هو المصنف

هذا مثال

أما الكود فى المودويلات فمكانه عام

أنت تخصص له مكانا كزر أمر أو غيره و يستدعى عند الحاجة

مثلا كود لفتح نافذة عن طريق زر أمر

لا يناسب وضعه فى المصنف

لأن استدعاء هذه النافذة له وقته فى البرنامج

مثلا

الكود السابق يمكن وضعه فى مودويل

لكن يتم استدعاؤه من نفس المكان

وهو فتح المصنف

لأن الأكواد التى فى المودويلات

لا يتم فتحها مباشرة

لكن يتم استدعاؤها من الكائنات المرتبطة بها

و الله أعلم

تم تعديل بواسطه kemas
  • 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