فهم المتغيرات والثوابت في Excel وحدات الماكرو

في هذه المقالة ، ستتعرف على الثوابت والمتغيرات الموجودة في وحدات الماكرو ، وأين يمكن استخدامها ، وما هو الفرق الرئيسي بين أنواع البيانات المختلفة. سيتم الكشف أيضًا عن سبب الحاجة إلى الثوابت ، إذا كان بإمكانك فقط كتابة متغير وعدم تغييره أبدًا.

مثل لغات البرمجة الأخرى ، يمكن تخزين البيانات في متغيرات أو ثوابت (يُشار إلى كلاهما أيضًا باسم حاويات البيانات). هذا هو الاختلاف الرئيسي بين هذه المفاهيم. قد يتغير السابق اعتمادًا على ما يحدث في البرنامج. في المقابل ، يتم تعيين الثوابت مرة واحدة ولا تغير قيمتها.

يمكن أن تكون الثوابت مفيدة إذا كنت بحاجة إلى استخدام نفس القيمة الكبيرة عدة مرات. بدلاً من نسخ الرقم ، يمكنك ببساطة كتابة اسم الثابت. على سبيل المثال ، يمكنك استخدام الثابت "Pi" لتخزين Pi ، وهي قيمة ثابتة. إنه كبير جدًا ، وفي كل مرة يكون من الصعب جدًا كتابته أو البحث عنه ونسخه. وهكذا ، يكفي كتابة حرفين ، وتستخدم البيئة تلقائيًا الرقم المطلوب.

يحتاج مستخدم Excel إلى التصريح عن المتغيرات إذا احتاج إلى تغيير القيمة المخزنة فيها من وقت لآخر. على سبيل المثال ، يمكنك تعيين متغير يسمى sVAT_Rate ، والذي سيخزن معدل ضريبة القيمة المضافة الحالي للمنتج. إذا تغير ، يمكنك تصحيحه بسرعة. هذا مفيد بشكل خاص لأولئك الذين يمارسون الأعمال التجارية في الولايات المتحدة ، حيث قد لا تخضع بعض السلع لضريبة القيمة المضافة على الإطلاق (وتختلف هذه الضريبة أيضًا من ولاية إلى أخرى).

أنواع البيانات

يمكن أن تكون كل حاوية بيانات واحدة من عدة أنواع. يوجد هنا جدول يصف الأنواع القياسية للمعلومات المعالجة. هناك الكثير منهم ، وقد يبدو للمبتدئين في البداية أنهم يكررون بعضهم البعض. لكن هذا شعور وهمي. تابع القراءة لمعرفة سبب أهمية تحديد نوع البيانات الصحيح.

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

تعريف الثوابت والمتغيرات

لا يُنصح بشدة باستخدام حاوية بيانات دون الإعلان عنها أولاً. ثم يمكن أن ينشأ عدد من المشاكل ، لتجنب ذلك من الضروري كتابة بضعة أسطر صغيرة من التعليمات البرمجية مع تعداد المتغيرات أو الثوابت.

للإعلان عن متغير ، يتم استخدام بيان Dim. على سبيل المثال ، مثل هذا:

خافت Variable_Name كعدد صحيح

Variable_Name هو اسم المتغير. بعد ذلك ، تتم كتابة عامل التشغيل As ، للإشارة إلى نوع البيانات. بدلاً من السلاسل "Variable_Name" و "Integer" ، يمكنك إدخال اسمك ونوع البيانات.

يمكن أيضًا التصريح عن الثوابت ، ولكن يجب عليك أولاً تحديد قيمتها. أحد الخيارات هو:

كونست iMaxCount = 5000

في الإنصاف ، في بعض الحالات ، يمكنك الاستغناء عن التصريح عن متغير ، ولكن في هذه الحالة سيتم تعيين نوع المتغير تلقائيًا له. ومع ذلك ، لا ينصح بهذا للأسباب التالية:

  1. تتم معالجة المتغير بشكل أبطأ بكثير ، وإذا كان هناك العديد من هذه المتغيرات ، فيمكن أن تتباطأ معالجة المعلومات بشكل كبير على أجهزة الكمبيوتر الضعيفة. يبدو أن تلك الثواني ستقرر؟ ولكن إذا كان عليك كتابة عدد كبير من أسطر التعليمات البرمجية ، ثم تشغيلها أيضًا على أجهزة كمبيوتر ضعيفة (والتي لا تزال تُباع ، نظرًا لأن مجموعات المكاتب الحديثة تتطلب الكثير من ذاكرة الوصول العشوائي) ، فيمكنك إيقاف العمل تمامًا. هناك حالات أدت فيها الكتابة الخاطئة لوحدات الماكرو إلى تجميد الكتب الذكية التي تحتوي على كمية صغيرة من ذاكرة الوصول العشوائي وليست مصممة لأداء مهام معقدة. 
  2. يُسمح بالطباعة الخاطئة في الأسماء ، والتي يمكن منعها باستخدام عبارة Option Explicit ، والتي تتيح لك العثور على متغير غير معرّف ، إذا تم العثور عليه. هذه طريقة سهلة لاكتشاف الأخطاء ، لأن أدنى خطأ مطبعي يتسبب في عدم قدرة المترجم الفوري على تحديد المتغير. وإذا قمت بتشغيل وضع إعلان المتغير ، فلن يسمح لك المترجم الفوري بتشغيل الماكرو إذا تم العثور على حاويات بيانات لم يتم الإعلان عنها في بداية الوحدة.
  3. تجنب الأخطاء التي تسببها القيم المتغيرة التي لا تتطابق مع نوع البيانات. عادةً ما يؤدي تعيين قيمة نصية لمتغير عدد صحيح إلى حدوث خطأ. نعم ، من ناحية أخرى ، يتم تعيين نوع عام بدون تصريح ، ولكن إذا تم الإعلان عنها مسبقًا ، فيمكن عندئذٍ تجنب الأخطاء العشوائية.

لذلك ، على الرغم من كل شيء ، يوصى بشدة بالإعلان عن جميع المتغيرات في وحدات ماكرو Excel.

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

  1. خطوط فارغة.
  2. تأخذ الأرقام القيمة 0.
  3. تعتبر المتغيرات من النوع Boolean في البداية خاطئة.
  4. التاريخ الافتراضي هو 30 ديسمبر 1899.

على سبيل المثال ، لا تحتاج إلى تعيين القيمة 0 لمتغير عدد صحيح إذا لم يتم تحديد قيمة مسبقًا. هي بالفعل تحتوي على هذا الرقم.

بيان الخيار الصريح

تسمح لك هذه العبارة بالإعلان عن جميع المتغيرات المستخدمة في التعليمات البرمجية لـ VBA وتحديد وجود أي حاويات غير معرّفة قبل تشغيل الكود. لاستخدام هذه الميزة ، ما عليك سوى كتابة سطر من كود Option Explicit في أعلى شفرة الماكرو.

إذا كنت بحاجة إلى تضمين هذا البيان في التعليمات البرمجية الخاصة بك في كل مرة ، فيمكنك القيام بذلك باستخدام إعداد خاص في محرر VBA. لتمكين هذا الخيار ، يجب عليك:

  1. انتقل إلى بيئة التطوير على طول المسار - أدوات> خيارات.
  2. في النافذة التي تفتح بعد ذلك ، افتح علامة التبويب محرر.
  3. وأخيرًا ، حدد المربع بجوار عنصر "طلب إقرار المتغير".

عند الانتهاء من هذه الخطوات ، انقر فوق الزر "موافق". 

هذا كل شيء ، الآن عند كتابة كل ماكرو جديد ، سيتم إدراج هذا السطر في الجزء العلوي من الكود تلقائيًا.

نطاق الثوابت والمتغيرات

كل متغير أو ثابت له نطاق محدود فقط. هذا يعتمد على المكان الذي تعلن فيه.

افترض أن لدينا وظيفة إجمالي_ التكلفة ()، ويستخدم المتغير sVAT_Rate. اعتمادًا على الموضع في الوحدة ، سيكون لها نطاق مختلف:

الخيار صريح

خافت sVAT_Rate كفرد

دالة Total_Cost () على أنها مضاعفة

.

.

.

نهاية وظيفة

إذا تم الإعلان عن متغير في الجزء العلوي من الوحدة نفسها ، فإنه ينتشر عبر تلك الوحدة. أي أنه يمكن قراءتها بكل إجراء.

علاوة على ذلك ، إذا غيّر أحد الإجراءات قيمة المتغير ، فسيقرأ الإجراء التالي أيضًا هذه القيمة المصححة. لكن في الوحدات النمطية الأخرى ، لن يتم قراءة هذا المتغير.

الخيار صريح

دالة Total_Cost () على أنها مضاعفة

خافت sVAT_Rate كفرد

   .

   .

   .

نهاية وظيفة

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

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

يمكنك تعيين نطاق الثوابت بطريقة مماثلة ، ولكن الكلمة الأساسية هنا مكتوبة مع عامل التشغيل Const.

فيما يلي جدول يحتوي على مثال جيد لكيفية عمله مع الثوابت والمتغيرات.

الخيار صريح

عامة sVAT_Rate كأفراد

عام Const iMax_Count = 5000

في هذا المثال ، يمكنك معرفة كيفية استخدام الكلمة الأساسية العامة للإعلان عن متغير ، وما تحتاج إلى كتابته في محرر Visual Basic للإعلان عن ثابت عام. ينطبق نطاق حاويات القيمة هذه على جميع الوحدات.
الخيار صريح

sVAT_Rate الخاص بصفته فردية

خاص Const iMax_Count = 5000

هنا ، يتم التصريح عن المتغيرات والثوابت باستخدام الكلمة الأساسية الخاصة. هذا يعني أنه لا يمكن رؤيتها إلا ضمن الوحدة النمطية الحالية ، ولا يمكن للإجراءات في الوحدات الأخرى استخدامها.

لماذا هناك حاجة إلى الثوابت والمتغيرات

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

تبين أن الإجابة موجودة في مكان ما في نفس المستوى فيما يتعلق باستخدام أنواع البيانات التي تشغل مساحة كبيرة في الذاكرة. إذا كنا نتعامل مع عدد كبير من المتغيرات ، فيمكننا تغيير حاوية موجودة عن طريق الخطأ. إذا وصف المستخدم أن قيمة معينة لن تتغير أبدًا ، فستتحكم البيئة تلقائيًا في ذلك.

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

أو ، إذا كان هناك ثابت باسم واحد ، وكان للمتغير اسم مختلف ولكن متشابه. يمكن للمطور أن يربكهم ببساطة. على سبيل المثال ، أحد المتغيرات التي لا تحتاج إلى تغيير يسمى Variable11 ، والمتغير الآخر الذي يمكن تحريره يسمى Variable1. يمكن لأي شخص تلقائيًا ، عند كتابة رمز ، تخطي وحدة إضافية عن طريق الخطأ وعدم ملاحظة ذلك. نتيجة لذلك ، سيتم تغيير حاوية القيم ، والتي لا ينبغي لمسها.

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

نعم ، يمكنك التعامل مع التعليقات في هذه الحالة ، لكن أليس من الأسهل تحديد كلمة Const؟

استنتاجات

تعد المتغيرات مكونًا أساسيًا لبرمجة الماكرو ، والتي تتيح لك إجراء عمليات معقدة ، من الحسابات إلى إبلاغ المستخدم بأحداث معينة أو تحديد قيم معينة في خلايا جدول البيانات.

يجب استخدام الثوابت إذا كان المطور يعرف على وجه اليقين أن محتويات هذه الحاويات لن تتغير في المستقبل. يوصى بعدم استخدام المتغيرات بدلاً من ذلك ، حيث من الممكن ارتكاب خطأ عن طريق الخطأ.

اترك تعليق