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

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

على سبيل المثال ، ثابت Pi يخزن القيمة 3,14159265،XNUMX ... لن يتغير الرقم "Pi" أثناء تنفيذ البرنامج ، ولكنه يظل أكثر ملاءمة لتخزين مثل هذه القيمة كقيمة ثابتة.

في نفس الوقت ، يمكننا استخدام المتغير sVAT_Rate لتخزين معدل ضريبة القيمة المضافة على البضائع المشتراة. قيمة متغيرة sVAT_Rate قد تختلف تبعًا للمنتج الذي تم شراؤه.

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

جميع المتغيرات والثوابت هي من نوع بيانات معين. يسرد الجدول أدناه أنواع البيانات المستخدمة في VBA مع وصف ونطاق من القيم الممكنة:

نوع البيانات حجمالوصفمدى من القيم
بايتبايت 1اعداد صحيحة موجبة؛ غالبًا ما تستخدم للبيانات الثنائيةمن 0 ل255
منطقيةبايت 2يمكن أن تكون إما صواب أو خطأصحيحة أو خاطئة
عدد صحيحبايت 2الأعداد الصحيحة (لا يوجد جزء كسري)من -32 إلى +768
طويلبايت 4أعداد صحيحة كبيرة (بدون جزء كسري)от -2 147 483 648 до +2 147 483 647
عزباءبايت 4رقم النقطة العائمة بدقة واحدةمن -3.4 e38 إلى + 3.4e38
مزدوجبايت 8رقم النقطة العائمة مزدوج الدقةمن -1.8 e308 إلى + 1.8e308
العملةبايت 8رقم الفاصلة العائمة ، مع عدد ثابت من المنازل العشريةот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
التاريخبايت 8التاريخ والوقت - بيانات من النوع يتم تمثيل التاريخ برقم فاصلة عائمة. الجزء الصحيح من هذا الرقم يعبر عن التاريخ والجزء الكسري يعبر عن الوقت.من 1 يناير 100 إلى 31 ديسمبر 9999
هدفبايت 4مرجع كائنأي مرجع كائن
خيطيتغيرمجموعة الأحرف. يمكن أن يكون نوع السلسلة بطول ثابت أو متغير. أكثر شيوعًا مع طول متغيرطول ثابت - ما يصل إلى 65 حرفًا تقريبًا. طول متغير - ما يصل إلى 500 مليار حرف تقريبًا
متنوعيتغيرقد يحتوي على تاريخ أو عدد عشري أو سلسلة أحرف. يستخدم هذا النوع في الحالات التي لا يُعرف فيها مسبقًا نوع البيانات التي سيتم إدخالها.رقم - مزدوج ، سلسلة - سلسلة

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

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

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

• يتم تهيئة السلاسل النصية بسلاسل فارغة.

• الأرقام - القيمة 0 ؛

• نوع المتغيرات منطقية - خطأ شنيع؛

• التواريخ - 30 ديسمبر 1899.

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

Dim Имя_Переменной As Тип_Данных

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

خافت sVAT_Rate باعتباره خافتًا فرديًا كعدد صحيح

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

Const iMaxCount = 5000 Const iMaxScore = 100

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

وبالتالي ، يمكن للمبرمج استخدام المتغير الجديد في أي وقت (حتى لو لم يتم التصريح عنه) ، وسيعامله Excel كمتغير من النوع متنوع. ومع ذلك ، هناك عدة أسباب لعدم القيام بذلك:

  1. استخدام الذاكرة وسرعة الحساب. إذا لم تعلن عن متغير مع الإشارة إلى نوع البيانات ، فسيتم تعيينه افتراضيًا على النوع متنوع. يستخدم نوع البيانات هذا ذاكرة أكبر من أنواع البيانات الأخرى. قد لا يبدو عدد قليل من البايتات الإضافية لكل متغير كثيرًا ، ولكن من الناحية العملية ، يمكن أن تحتوي البرامج على آلاف المتغيرات (خاصة عند العمل مع المصفوفات). لذلك ، الذاكرة الزائدة المستخدمة من قبل المتغيرات مثل متنوع، مقارنة بمتغيرات النوع عدد صحيح or عزباء، يمكن أن تضيف ما يصل إلى مبلغ كبير. بالإضافة إلى ذلك ، العمليات مع متغيرات من النوع متنوع يتم تنفيذها بشكل أبطأ بكثير من المتغيرات من الأنواع الأخرى ، على التوالي ، ألف متغير إضافي من النوع متنوع يمكن أن تبطئ العمليات الحسابية بشكل كبير.
  2. منع الأخطاء المطبعية في أسماء المتغيرات. إذا تم الإعلان عن جميع المتغيرات ، فيمكن استخدام عبارة VBA - الخيار صريح (سنتحدث عنها لاحقًا) من أجل تحديد جميع المتغيرات غير المعلنة. هذا يزيل ظهور خطأ في البرنامج كنتيجة لاسم متغير مكتوب بشكل غير صحيح. على سبيل المثال ، باستخدام متغير اسمه sVAT_Rate، يمكنك عمل خطأ إملائي وتعيين قيمة لهذا المتغير ، اكتب: "VATRate = 0,175،XNUMX". ومن المتوقع أن المتغير من الآن فصاعدا sVAT_Rate يجب أن تحتوي على القيمة 0,175،XNUMX - لكنها بالطبع لا. إذا تم تمكين وضع الإعلان الإلزامي لجميع المتغيرات المستخدمة ، فسيشير مترجم VBA على الفور إلى خطأ ، لأنه لن يجد المتغير قيمة الضريبة من بين المعلنين.
  3. إبراز القيم التي لا تطابق النوع المعلن للمتغير. إذا قمت بتعريف متغير من نوع معين وحاولت تعيين بيانات من نوع مختلف له ، فستتلقى خطأ ، والذي ، إذا ترك دون تصحيح ، يمكن أن يتسبب في تعطل البرنامج. للوهلة الأولى ، قد يبدو هذا سببًا جيدًا لعدم التصريح عن المتغيرات ، ولكن في الواقع ، اتضح أن أحد المتغيرات تلقى البيانات الخاطئة التي كان من المفترض أن يتلقاها - كان ذلك أفضل بكثير! خلاف ذلك ، إذا استمر تشغيل البرنامج ، فقد تكون النتائج غير صحيحة وغير متوقعة ، وسيكون من الصعب العثور على سبب الأخطاء. من الممكن أيضًا أن يتم تنفيذ الماكرو "بنجاح". نتيجة لذلك ، سوف يمر الخطأ دون أن يلاحظه أحد وسيستمر العمل ببيانات غير صحيحة!

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

الخيار صريح

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

Option Explicit

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

يتم ذلك على النحو التالي:

  • من قائمة محرر Visual Basic ، انقر فوق "نعم" أدوات > مزيد من الخيارات
  • في مربع الحوار الذي يظهر ، افتح علامة التبويب محرر
  • تفقد الصندوق تتطلب إقرار المتغير والصحافة OK

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

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

لكل متغير أو ثابت معلن نطاقه المحدود ، أي جزء محدود من البرنامج الذي يوجد فيه هذا المتغير. يعتمد النطاق على مكان إعلان المتغير أو الثابت. خذ على سبيل المثال المتغير sVAT_Rate، والذي يستخدم في الوظيفة إجمالي_ التكلفة. يناقش الجدول التالي خيارين لتحديد النطاق المتغير sVAT_Rateأعلن في موقعين مختلفين في الوحدة:

الخيار صريح قاتمة sVAT_Rate كدالة مفردة Total_Cost () كوظيفة مزدوجة ... End
إذا كان المتغير sVAT_Rate أعلن في بداية الوحدة النمطية ، فسيكون نطاق هذا المتغير هو الوحدة بأكملها (أي المتغير sVAT_Rate سيتم التعرف عليه من خلال جميع الإجراءات في هذه الوحدة).

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

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

الخيار الصريح الوظيفة Total_Cost () كـ Double Dim sVAT_Rate كوظيفة واحدة ... End
إذا كان المتغير sVAT_Rate أعلن في بداية الوظيفة إجمالي_ التكلفة، عندئذٍ سيقتصر نطاقها على هذه الوظيفة (أي داخل الوظيفة إجمالي_ التكلفة، يمكنك استخدام المتغير sVAT_Rate، ولكن ليس بالخارج).

عند محاولة استخدام ملفات sVAT_Rate في إجراء آخر ، سيقوم مترجم VBA بالإبلاغ عن خطأ لأنه لم يتم التصريح عن هذا المتغير خارج الوظيفة إجمالي_ التكلفة (بشرط استخدام عامل التشغيل الخيار صريح).

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

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

يمكنك أيضًا استخدام الكلمات الأساسية للإعلان عن الثوابت. عام и خاص، ولكن ليس بدلاً من الكلمة الرئيسية CONST، جنبا إلى جنب معها.

توضح الأمثلة التالية استخدام الكلمات الرئيسية عام и خاص تطبق على المتغيرات والثوابت.

الخيار عام صريح sVAT_Rate كعامة واحدة Const iMax_Count = 5000 ...    
في هذا المثال ، الكلمة الأساسية عام تستخدم للإعلان عن متغير sVAT_Rate والثوابت iMax_Count. سيكون نطاق العناصر المعلنة بهذه الطريقة هو المشروع الحالي بأكمله.

وهذا يعني أن sVAT_Rate и iMax_Count ستكون متاحة في أي وحدة مشروع.

خيار صريح خاص sVAT_Rate باعتباره فرديًا خاصًا Const iMax_Count = 5000 ...    
في هذا المثال ، للإعلان عن متغير sVAT_Rate والثوابت iMax_Count الكلمات الرئيسية المستخدمة خاص. نطاق هذه العناصر هو الوحدة الحالية.

وهذا يعني أن sVAT_Rate и iMax_Count ستكون متاحة في جميع إجراءات الوحدة الحالية ، ولكنها لن تكون متاحة للإجراءات في الوحدات الأخرى.

اترك تعليق