په VBA کې متغیرات او ثباتونه

په VBA کې، لکه څنګه چې د نورو پروګرام کولو ژبې کې، متغیرونه او ثابتونکي د هر ارزښت ذخیره کولو لپاره کارول کیږي. لکه څنګه چې نوم معنی لري، متغیرات کولی شي بدلون ومومي، پداسې حال کې چې ثابت ارزښتونه ثابت ارزښتونه ذخیره کوي.

د مثال په توګه، یو ثابت Pi د 3,14159265 ارزښت زیرمه کوي… د "Pi" شمیره به د برنامه اجرا کولو په جریان کې بدلون ونلري ، مګر دا لاهم خورا اسانه دی چې دا ډول ارزښت د ثابت په توګه ذخیره کړئ.

په ورته وخت کې، موږ کولی شو متغیر وکاروو sVAT_Rate په پیرودل شویو توکو باندې د VAT نرخ ذخیره کول. متغیر ارزښت sVAT_Rate ممکن د پیرود شوي محصول پورې اړه ولري.

د معلوماتو ډولونه

ټول متغیرونه او ثابتونکي د یو ځانګړي ډیټا ډول دي. لاندې جدول د معلوماتو ډولونه لیست کوي چې په VBA کې کارول کیږي د توضیحاتو او ممکنه ارزښتونو لړۍ سره:

د معلوماتو ډول اندازهDescriptionد ارزښتونو حد
بټیټ1 بټسمثبت عددونه؛ ډیری وختونه د بائنری معلوماتو لپاره کارول کیږيله 0 ته 255
بولین2 بټسکیدای شي ریښتیا یا غلط ويسم یا ناسم
انټرنټ2 بټسبشپړ شمیرې (بشپړ برخه نشته)له -32 څخه +768 ته
اوږده4 بټسلوی عددونه (بشپړ برخه نشته)от -2 147 483 648 до +2 147 483 647
واحد4 بټسد واحد دقیق فلوټینګ پوائنټ شمیرهله -3.4e38 څخه تر +3.4e38 پورې
Double8 بټسدوه ځله دقیق د فلوټینګ پوائنټ شمیرهله -1.8e308 څخه تر +1.8e308 پورې
د اسعارو8 بټسد فلوټینګ پوائنټ شمیره، د یو ثابت شمیر لسیزو ځایونو سرهот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
نېټه8 بټسنیټه او وخت - د ډول ډیټا نیټه د تیر شوي نقطې شمیرې لخوا ښودل کیږي. د دې شمیرې بشپړې برخه نیټه څرګندوي، او نیمګړی برخه وخت څرګندوي.د جنوري 1، 100 څخه تر دسمبر 31، 9999 پورې
څیز4 بټسد اعتراض حوالهد هر څیز حواله
تاربدلیږيد کرکټر ترتیب. د تار ډول کیدای شي ثابت یا متغیر اوږدوالی وي. ډیر عام د متغیر اوږدوالی سره کارول کیږيثابت اوږدوالی - تر 65 حروف پورې. متغیر اوږدوالی - تر 500 ملیارد حروف پورې
variantبدلیږيکیدای شي نیټه، یو فلوټ، یا د کرکټر تار ولري. دا ډول په هغه قضیو کې کارول کیږي چیرې چې دا دمخه نه پوهیږي چې کوم ډول معلومات به داخل شي.شمیره - دوه ګونی، تار - تار

په ښکاره ډول، د پورته جدول په کارولو سره او د سم ډیټا ډول غوره کول، تاسو کولی شئ حافظه په اقتصادي توګه وکاروئ (د مثال په توګه، د ډاټا ډول غوره کړئ انټرنټ پرځای یې اوږده or واحد پرځای یې Double). په هرصورت، کله چې د ډیرو کمپیکٹ ډیټا ډولونو کارول، تاسو باید محتاط اوسئ چې ستاسو کوډ هڅه نه کوي چې په غیر متناسب ډول لوی ارزښتونه په دوی کې فټ کړي.

د متغیرونو او دوامونو اعلان کول

د ژباړونکي یادونه: په VBA کې د متغیرونو په اړه خبرې کول، دا د یو بل خورا مهم ټکي د یادولو وړ ده. که موږ یو متغیر اعلان کړو مګر هغې ته هیڅ ارزښت نه ورکوو، نو دا د ډیفالټ ارزښت سره پیل کیږي:

• د متن تارونه د خالي تارونو سره پیل کیږي.

• شمیرې - ارزښت 0؛

• ډول ډول تغیرات بولین - دروغ

• نیټې - د دسمبر 30، 1899.

مخکې له دې چې متغیر یا ثابت وکارول شي، دا باید اعلان شي. د دې کولو لپاره، میکرو ته د کوډ لاندې ساده کرښه اضافه کړئ:

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

د کوډ په پورته کرښه کې تغیر ورکونکی نوم د متغیر نوم دی چې په کوډ کې به کارول کیږي، او ډاټا_ ډول د جدول څخه د ډیټا ډولونو څخه یو دی چې پدې مقاله کې لږ دمخه ورکړل شوی. د مثال په توګه:

Dim sVAT_Rate د واحد Dim او Integer په توګه

ثابتونکي په ورته ډول اعلان شوي، مګر کله چې د ثبات اعلان کول، د دوی ارزښت باید سمدلاسه څرګند شي. د مثال په توګه، دا ډول:

Const iMaxCount = 5000 Const iMaxScore = 100

دا اړینه نده چې په Excel کې متغیرات اعلان کړئ. په ډیفالټ کې ، ټول داخل شوي مګر په Excel کې نه اعلان شوي متغیرونه به ډول ولري variant او د دې وړتیا به ولري چې دواړه عددي او متن ارزښت ومني.

په دې توګه، پروګرامر کولی شي په هر وخت کې نوی متغیر وکاروي (حتی که دا اعلان شوی نه وي)، او ایکسل به دا د ډول متغیر په توګه چلند وکړي. variant. په هرصورت، ډیری دلیلونه شتون لري چې ولې دا باید ترسره نشي:

  1. د حافظې کارول او د کمپیوټري سرعت. که تاسو د ډیټا ډول په نښه کولو سره متغیر اعلان نه کړئ ، نو بیا به په ډیفالټ ډول ډول ته تنظیم شي variant. دا ډیټا ډول د نورو ډیټا ډولونو په پرتله ډیر حافظه کاروي. په هر متغیر کې یو څو اضافي بایټونه ممکن د ډیر څه په څیر نه وي، مګر په عمل کې، پروګرامونه په زرګونو متغیرونه لري (په ځانګړې توګه کله چې د صفونو سره کار کوي). نو ځکه، اضافي حافظه د متغیرونو لخوا کارول کیږي لکه variantد ډول متغیرونو په پرتله انټرنټ or واحد، کولی شي د پام وړ مقدار اضافه کړي. برسېره پردې، د ډول ډول متغیرونو سره عملیات variant د نورو ډولونو متغیرونو په پرتله ډیر ورو اجرا کیږي، په ترتیب سره، د ډول اضافي زره متغیرونه variant کولی شي د پام وړ محاسبه ورو کړي.
  2. په متغیر نومونو کې د ټایپونو مخنیوی. که ټول متغیرونه اعلان شي، نو بیا د VBA بیان کارول کیدی شي - اختیار څرګند (موږ به وروسته په دې اړه وغږیږو) د دې لپاره چې ټول غیر اعلان شوي متغیرونه وپیژنو. دا په برنامه کې د غلط لیکل شوي متغیر نوم په پایله کې د غلطۍ څرګندیدل له مینځه وړي. د مثال په توګه، د متغیر په نوم کارول sVAT_Rate، تاسو کولی شئ یو ټایپ کړئ او دې متغیر ته ارزښت وټاکئ، ولیکئ: "VATRate = 0,175". تمه کیږي چې له اوس څخه، متغیر sVAT_Rate باید 0,175 ارزښت ولري - مګر البته دا نده. که چیرې د ټولو کارول شوي متغیرونو د لازمي اعلان کولو حالت فعال وي ، نو د VBA کمپیلر به سمدلاسه یوه تېروتنه په ګوته کړي ، ځکه چې دا به متغیر ونه موندل شي. VATRate د اعلان شویو په منځ کې.
  3. د ارزښتونو روښانه کول چې د متغیر اعلان شوي ډول سره سمون نه لري. که تاسو د یو ځانګړي ډول متغیر اعلان کړئ او هڅه وکړئ چې د مختلف ډول ډیټا وټاکئ ، نو تاسو به یوه تېروتنه ترلاسه کړئ ، کوم چې که سم نه وي پاتې کیدی شي د برنامه خرابیدو لامل شي. په لومړي نظر کې، دا ممکن د یو ښه دلیل په څیر ښکاري چې د متغیرونو اعلان نه کوي، مګر په حقیقت کې، مخکې له دې چې دا معلومه شي چې یو متغیر غلط معلومات ترلاسه کړي چې باید ترلاسه کړي - نو ډیر ښه! که نه نو، که برنامه دوام ومومي، پایلې ممکن غلط او غیر متوقع وي، او د غلطیو لامل موندل به خورا ستونزمن وي. دا هم امکان لري چې میکرو به په "بریالیتوب" اجرا شي. د پایلې په توګه، تېروتنه به له پامه ونه غورځول شي او کار به د غلط معلوماتو سره دوام ومومي!

په دې اړه، دا د پام وړ ده چې د غلط معلوماتو ډول کشف کړئ او ژر تر ژره په کوډ کې دا ډول غلطۍ سم کړئ. د دې دلیلونو لپاره، دا سپارښتنه کیږي چې تاسو د VBA میکرو لیکلو په وخت کې ټول متغیرونه اعلان کړئ.

اختیار څرګند

چلونکی اختیار څرګند د ټولو متغیرونو لامل کیږي چې د VBA کوډ کې به کارول کیږي اعلان شي، او ټول غیر اعلان شوي متغیرونه د تالیف پرمهال د غلطیو په توګه بیرغ کوي (مخکې له دې چې د کوډ اجرا پیل شي). د دې آپریټر پلي کول ستونزمن ندي - یوازې دا کرښه د VBA فایل په سر کې ولیکئ:

Option Explicit

که تاسو غواړئ چې تل دننه کړئ اختیار څرګند د هر نوي VBA ماډل سر ته، دا په اتوماتيک ډول ترسره کیدی شي. د دې کولو لپاره ، تاسو اړتیا لرئ اختیار فعال کړئ د متغیر اعلامیې ته اړتیا ده د VBA مدیر ترتیباتو کې.

دا په لاندې ډول ترسره کیږي:

  • د Visual Basic Editor مینو څخه، کلیک وکړئ وسایلو > غوراوي
  • په هغه ډیالوګ کې چې څرګندیږي ، ټب خلاص کړئ مدیر
  • بکس وګوره د متغیر اعلامیې ته اړتیا ده او مطبوعات OK

کله چې فعال شي، تار اختیار څرګند د هر نوي جوړ شوي ماډل په پیل کې به په اتوماتيک ډول داخل شي.

د متغیرونو او مستقلاتو ساحه

هر اعلان شوی متغیر یا ثابت خپل محدود ساحه لري، دا د پروګرام محدوده برخه ده چې دا متغیر شتون لري. دائره په دې پورې اړه لري چې د متغیر یا ثابت اعلان چیرته رامینځته شوی. د مثال په توګه، متغیر واخلئ sVAT_Rate، کوم چې په فنکشن کې کارول کیږي ټول_لګښت. لاندې جدول د متغیر سکوپ کولو لپاره دوه اختیارونه بحث کوي sVAT_Rateپه ماډل کې په دوه مختلف پوستونو کې اعلان شوی:

اختیار واضح Dim sVAT_Rate د واحد فنکشن په توګه Total_Cost() د ډبل په توګه ... پای فنکشن
که متغیر sVAT_Rate د ماډل په پیل کې اعلان شوی، نو د دې متغیر ساحه به ټول ماډل وي (یعنې متغیر sVAT_Rate په دې ماډل کې به د ټولو پروسیجرونو لخوا وپیژندل شي).

نو، که په فعالیت کې وي ټول_لګښت متغیر sVAT_Rate یو څه ارزښت به وټاکل شي، بیا به په ورته ماډل کې اجرا شوي راتلونکی فعالیت به متغیر وکاروي sVAT_Rate په ورته معنی سره.

په هرصورت، که چیرې کوم فعالیت په بل ماډل کې موقعیت ولري، نو د دې لپاره متغیر sVAT_Rate معلوم نه شي.

د اختیار څرګند فعالیت Total_Cost() د دوه ګونی sVAT_Rate په توګه د واحد په توګه ... پای فنکشن
که متغیر sVAT_Rate د فعالیت په پیل کې اعلان شو ټول_لګښت، نو د هغې ساحه به یوازې د دې فنکشن پورې محدود وي (د بیلګې په توګه د فنکشن دننه ټول_لګښت، تاسو کولی شئ متغیر وکاروئ sVAT_Rateخو بهر نه).

کله چې د کارولو هڅه وکړئ sVAT_Rate په بل طرزالعمل کې، د VBA کمپیلر به د یوې تېروتنې راپور ورکړي ځکه چې دا متغیر د فعالیت څخه بهر نه و اعلان شوی ټول_لګښت (په دې شرط چې آپریټر کارول کیږي اختیار څرګند).

په پورته ښودل شوي مثال کې، متغیر د کلیدي کلمې سره د ماډل په کچه اعلان شوی ورو. په هرصورت، دا ممکن اړین وي چې اعلان شوي تغیرات په نورو ماډلونو کې وکارول شي. په داسې حاالتو کې، د کلیدي کلمې پرځای متغیر اعلان کول ورو کلیدي کلمه باید وکارول شي د عامې.

په هرصورت، د کلیدي کلمې پر ځای د ماډل په کچه د متغیر اعلانولو لپاره ورو کلیدي کلمه کارول کیدی شي د خصوصي، کوم چې دا په ګوته کوي چې دا متغیر یوازې په اوسني ماډل کې د کارولو لپاره دی.

تاسو کولی شئ د ثابتو اعلانولو لپاره کلیدي کلمې هم وکاروئ. د عامې и د خصوصي، مګر د کلیمې پرځای نه دد هغې سره.

لاندې مثالونه د کلیدي کلمو کارول ښیې د عامې и د خصوصي په متغیرونو او مستقلاتو باندې پلي کیږي.

اختیار واضح عامه sVAT_Rate د واحد عامه کانسټ په توګه iMax_Count = 5000 ...    
په دې مثال کې، کلیدي د عامې د متغیر اعلانولو لپاره کارول کیږي sVAT_Rate او ثابت iMax_Count. په دې ډول اعلان شوي عناصرو ساحه به ټوله اوسنۍ پروژه وي.

دا پدې مانا ده چې sVAT_Rate и iMax_Count د پروژې په هر ماډل کې به شتون ولري.

اختیار واضح خصوصي sVAT_Rate د واحد خصوصي کانسټ په توګه iMax_Count = 5000 ...    
په دې مثال کې، د متغیر اعلان کول sVAT_Rate او ثابت iMax_Count کلیدي کلمه کارول کیږي د خصوصي. د دې عناصرو ساحه اوسنی ماډل دی.

دا پدې مانا ده چې sVAT_Rate и iMax_Count د اوسني ماډل په ټولو پروسیجرونو کې به شتون ولري، مګر په نورو ماډلونو کې به د پروسیجرونو لپاره شتون ونلري.

یو ځواب ورکړئ ووځي