أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية استخدام المتغيرات في سوببروسيدوريس Excel في Visual Basic للتطبيقات

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

اضغط هنا لرابط المقالة باللغة الانجليزية843144
مقدمة حول
توضح هذه المقالة كيفية استخدام المتغيرات في Microsoft Excel في Microsoft Visual Basic for سوببروسيدوريس التطبيقات.

العودة إلى أعلى
معلومات أخرى

المتغيرات في إجراء sub

ميزة قوية من لغات البرمجة هي القدرة على تخزين شيء في متغير بحيث يمكن استخدام محتويات المتغير أو يمكن تغييره لاحقاً في الإجراء. يناقش هذا المستند التالية استخدام المتغيرات في Visual Basic:
  • كيف يتم تعريف المتغيرات.
  • الإجراءات والمشاريع التي يمكن أن تستخدم متغير.
  • مدة بقاء المتغير.
عودة إلى الأعلى

تقوم بتعريف متغير في ماكرو

أن أبسط طريقة لتعريف متغير في ماكرو استخدام عبارة Dim . السطر التالي بتعريف متغيرين x و y، الإعداد الصحيحة:
Dim x As Integer, y As Integer
مع x و y المحدد كإعداد صحيحة، التي يتم سردها في Visual Basic لتخصيص ذاكرة كافية لمتغير عدد صحيح (2 بايت لكل ل x و y) وأن المعلومات المخزنة في أما x أو y عدد صحيح بين-32768 و 32767.

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

إذا لم تحدد نوع البيانات لكل متغير، كما في التعليمات البرمجية ل Visual Basic التالية, فقط المتغير y معد كعدد صحيح متغير. سيكون المتغير x نوع متغير:
Dim x, y As Integer
لمزيد من المعلومات، راجع "نوع بيانات متغير" المقطع.

لتنفيذ اختبار متغير، اتبع الخطوات التالية:
  1. احفظ وأغلق أي مصنفات مفتوحة ثم قم بفتح جديد المصنف.
  2. بدء تشغيل محرر Visual Basic (اضغط ALT + F11).
  3. على إدراج القائمة، انقر فوقالوحدة النمطية.
  4. اكتب التعليمة البرمجية التالية:
    Sub Variable_Test()Dim x As Integer, y As Integerx = 10y = 100MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd Sub
  5. تشغيل الماكرو Variable_Test . تتلقى الرسالة التالية:
    هو قيمة x 10
    هو قيمة y 100
  6. انقر فوق موافق.
  7. في الماكرو Variable_Test بتغيير السطر التالي:
    x = 10

    إلى:
    x = "error"
  8. تشغيل الماكرو Variable_Test .
ظهور خطأ وقت التشغيل لأن "خطأ" ليس عدد صحيح والتي تحاول تعيين هذه القيمة سلسلة إلى متغير عدد صحيح x.

عودة إلى الأعلى

ملخص نوع البيانات

يسرد الجدول التالي أنواع البيانات متغيرة العامة:

نوع البياناتحجم التخزينالنطاق المسموح به
قيمة منطقية 2 بايت صواب أو خطأ
عدد صحيح 2 بايت -32768 إلى 32767
طويل 4 بايت -2147483648 إلى 2147483647
مزدوج 8 بايت -1.79769313486232 E308 إلى -4.94065645841247 E-324 للقيم السالبة; 4.94065645841247 E-324 إلى 1.79769313486232 E308 للقيم الموجبة
العملة 8 بايت 477.5808 إلى 922337203685, 477.5807
تاريخ 8 بايت 1 يناير 100 إلى 31 ديسمبر 9999
سلسلة وحدات البايت 10 + طول السلسلة

العودة إلى أعلى

نوع البيانات متغير

إذا لم تحدد نوع بيانات عندما تقوم بتعريف متغير ما، أو تقوم بتعريفه غير متغير على الإطلاق، Visual Basic تلقائياً بتحديد نوع البيانات متغير لهذا المتغير. فيما يلي بعض مزايا المتغيرات التي تم تعريفها كنوع البيانات هذا:
  • يمكن أن تحتوي على المتغيرات السلسلة والتاريخ والوقت، منطقية، أو القيم الرقمية.
  • يمكن تحويل المتغيرات القيم التي تحتوي عليها تلقائياً.
العيب أن متغير من متغيرات تتطلب على الأقل 16 بايت من الذاكرة. 16 بايت من الذاكرة بشكل ملحوظ في الإجراءات كبيرة أو في الوحدات النمطية معقدة.

لمشاهدة كيفية عمل ذلك في الماكرو Variable_Test ، اتبع الخطوات التالية:
  1. تغيير التعليمات البرمجية في الماكرو Variable_Test إلى:
    Sub Variable_Test()Dim x, yx = "string"y = 1.23MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd Sub
  2. تشغيل الماكرو Variable_Test .
لن تتلقى خطأ لأنه يمكن تعيين أي شيء إلى متغيرات متغير x و y.

ملاحظة يمكنك أيضا ترك خارج السطر التالي وسيتم الماكرو لا تزال تعمل المتغيرات x و y تعامل كأنواع بيانات متغير:
Dim x, y

عودة إلى الأعلى

نطاق المتغير

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

العودة إلى أعلى

نطاق مستوى الإجراء

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

للتحقق من أن متغير مع نطاق مستوى الإجراء مشاهدة خارج الإجراء حيث تم تعريفه، اتبع الخطوات التالية:
  1. إدراج وحدة نمطية جديدة في المشروع.
  2. اكتب كل من وحدات الماكرو التالية في هذه الوحدة النمطية:
    Sub Macro1()Dim x As Integerx = 10MsgBox "x, as seen by Macro1 is " & x'the next line runs Macro2Macro2End SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd Sub
  3. تشغيل ماكرو 1.

    تتلقى الرسالة التالية:
    x، كما يراها ماكرو 1 هو 10
  4. انقر فوق موافق.

    تظهر الرسالة التالية:
    x، كما يراها Macro2 هو
  5. انقر فوق موافق.
لا يعرض Macro2 قيمة للمتغير x لأن المتغير x محلي ماكرو 1.

العودة إلى أعلى

نطاق مستوى الوحدة النمطية الخاصة والعامة

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

لمشاهدة الفرق بين العبارة العامة والعبّارة Dim ، اتبع الخطوات التالية:
  1. احفظ وأغلق أي مصنفات مفتوحة ثم فتح جديد المصنف.
  2. بدء تشغيل محرر Visual Basic.
  3. إدراج وحدة نمطية في المشروع الخاص بك.
  4. اكتب التعليمة البرمجية التالية في هذه الوحدة النمطية:
    Public x As IntegerSub Macro_1a()x = 10MsgBox xMacro_1bEnd SubSub Macro_1b()x = x * 2MsgBox xMacro2End Sub
  5. إدراج وحدة نمطية أخرى في المشروع.
  6. اكتب التعليمة البرمجية التالية في هذه الوحدة النمطية:
    Sub Macro2()x = x * 3MsgBox xEnd Sub
  7. تشغيل الماكرو Macro_1a في الوحدة النمطية أولاً.

    مع x متغير تم تعريفها "العامة x صحيحاً"، كافة وحدات الماكرو الثلاثة في المشروع حق الوصول إلى قيمة ل x. يعرض مربع الرسالة الأول قيمة 10. الرسالة الثانية يعرض مربع قيمة 20 (لأن يتم ضرب x 2 في Macro_1b). يعرض مربع الرسالة الثالثة قيمة 60 (لأن القيمة لتغيير x إلى 20 في Macro_1b وثم ضرب 3 في Macro2).
  8. تغيير خط التعريف في الوحدة النمطية الأول من:
    Public x As Integer

    إلى:
    Dim x As Integer
  9. تشغيل الماكرو Macro_1a .

    مع x متغير تم تعريفها ك "Dim x As عدد صحيح "، وحدات الماكرو في الوحدة النمطية الأول فقط حق الوصول إلى القيمة ل x. لذا يعرض مربع الرسالة الأول قيمة 10، يعرض مربع الرسالة الثانية قيمة 20، (لأن يتم ضرب x 2 في Macro_1b) ويعرض مربع الرسالة الثالثة قيمة بين 0 (لأن لا يرى Macro2 قيمة x وقيمة الصفر غير مهيأ يتم استخدام بواسطة الماكرو 2).
  10. تغيير خط التعريف في الوحدة النمطية الأول من:
    Dim x As Integer

    إلى:
    Private x As Integer
  11. تشغيل الماكرو Macro_1a .
يتم عرض مربعات الرسائل نفس باستخدام نطاق البيان الخاص كما أنهم يستخدمون عبارة Dim . المتغير x له نفس النطاق، خاصة الوحدة النمطية حيث يتم تعريفه.

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

العودة إلى أعلى

مدة بقاء المتغير

يعرف الوقت خلاله متغير يحتفظ قيمته الخاصة به مدى الحياة. قد تتغير قيمة متغير على مدة بقائه، لكنه الاحتفاظ بقيمة. أيضا، عندما يفقد متغير النطاق، فإنه لم يعد قيمة.

عودة إلى الأعلى

تهيئة القيمة لمتغير

عندما تقوم بتشغيل ماكرو، يتم تهيئة كافة متغيرات قيمة. تتم تهيئة متغير رقمية إلى صفر، سلسلة متغيرة الطول تهيئة إلى سلسلة ذات طول صفري ("")، ويتم تعبئة سلسلة ذات طول ثابت باستخدام ترميز ASCII 0. تتم تهيئة متغير من المتغيرات إلى قيمة فارغة. فارغة يتم تمثيل المتغير بصفر في سياق رقمي وسلسلة ذات طول صفري ("") في سياق سلسلة.

مرة أخرى إلى أعلى

المتغيرات على مستوى الإجراء

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

لشرح المتغيرات على مستوى الإجراء كيف العمل، اتبع الخطوات التالية:
  1. إدراج وحدة نمطية جديدة في المشروع.
  2. اكتب كل من وحدات الماكرو التالية في هذه الوحدة النمطية:
    Sub Macro1()'set x as a procedure level variableDim x As Integer   MsgBox "the initialized value of x is " & xx = 10MsgBox "x is " & x'the next line runs Macro2Macro2MsgBox "x is still " & xEnd SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd Sub
  3. تشغيل ماكرو 1.

    تتلقى الرسالة التالية:
    تمت تهيئته بقيمة x هي 0
  4. انقر فوق موافق.

    تظهر الرسالة التالية:
    x هو 10
  5. انقر فوق موافق.

    تظهر الرسالة التالية:
    x، كما يراها Macro2
  6. انقر فوق موافق.

    لا يعرض Macro2 قيمة للمتغير x لأن المتغير x محلي ماكرو 1. تتلقى الرسالة التالية:
    x لا يزال 10
  7. انقر فوق موافق.
  8. تشغيل ماكرو 1.
تتلقى رسائل نفس الموضحة في الخطوات من 3 إلى 6 لأنه بمجرد كماكرو 1 إيقاف تشغيل في الخطوة 6، قيمة للمتغير x تم فقدان. لذلك، عند إعادة تشغيل ماكرو 1 في الخطوة 7، يظهر أول رسالة القيمة x كصفر ( تهيئة القيمة).

العودة إلى أعلى

الكلمة الأساسية ثابتة

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

لمعرفة كيفية الكلمة الأساسية ثابتة works، اتبع الخطوات التالية:
  1. تغيير التعليمات البرمجية في ماكرو 1 إلى:
    Sub Macro1()'set x as a procedure level variableStatic x As Integer   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd Sub
  2. تشغيل ماكرو 1.

    تتلقى الرسالة التالية:
    تمت تهيئته بقيمة x هي 0
  3. انقر فوق موافق.

    تظهر الرسالة التالية:
    x هو 10
  4. انقر فوق موافق.
  5. تشغيل ماكرو 1.

    تتلقى الرسالة التالية:
    تمت تهيئته بقيمة س هو 10
  6. انقر فوق موافق.

    تظهر الرسالة التالية:
    x هو 20
  7. انقر فوق موافق.
تختلف القيم التي تظهر في الرسائل الثاني الوقت لأنه تم تعريف المتغير x كمتغير ثابت والمتغير يحتفظ قيمته بعد قيامك بتشغيل ماكرو 1 الأول مرة.

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

للتحقق من عمر متغير مستوى الوحدة النمطية، اتبع الخطوات التالية:
  1. تغيير التعليمات البرمجية في الوحدة النمطية التي تحتوي على ماكرو 1 لما يلي:
    Dim x As Integer  'create a module-level variableSub Macro1()   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd Sub
  2. تشغيل ماكرو 1.

    تتلقى الرسالة التالية:
    تمت تهيئته بقيمة x هي 0
  3. انقر فوق موافق.

    تظهر الرسالة التالية:
    x هو 10
  4. انقر فوق موافق.
  5. تشغيل ماكرو 1.

    تتلقى الرسالة التالية:
    تمت تهيئته بقيمة س هو 10
  6. انقر فوق موافق.

    تظهر الرسالة التالية:
    x هو 20
  7. انقر فوق موافق.
تختلف القيم التي تظهر في الرسائل الثاني الوقت لأنه تم تعريف المتغير x كمتغير ثابت ويتم الاحتفاظ به قيمة بعد قيامك بتشغيل ماكرو 1 الأول مرة.

الخلف إلى أعلى

إعادة تعيين مشروع لإعادة تعيين متغيرات

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

إذا قمت بذلك لمشروع ماكرو 1 ثم أعد تشغيل ماكرو 1، يتم تهيئة قيمة المتغير x مرة أخرى إلى صفر وكنت تظهر الرسالة الأولى:
تمت تهيئته بقيمة س 0
لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":
843145وصف سوببروسيدوريس Excel في Visual Basic للتطبيقات (الصفيف)
sub إجراءات VBA المتغيرات var xl2007 xl2003 xl2000 xl2002 xl

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 843144 - آخر مراجعة: 03/29/2013 05:38:00 - المراجعة: 5.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbvba kbprogramming kbinfo kbmt KB843144 KbMtar
تعليقات
&t=">html>t=">