په VBA کې "فعال" او "فرعي" پروسیجرونه

جوړ شوی VBA افعال

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

د دې دندو لیست د VBA مدیر کې لیدل کیدی شي:

  • د ایکسل کاري کتاب خلاص کړئ او د VBA مدیر پیل کړئ (د دې کولو لپاره کلیک وکړئ Alt + F11) ، او بیا فشار ورکړئ F2.
  • د سکرین په پورتنۍ ښي خوا کې د ډراپ ډاون لیست څخه کتابتون غوره کړئ VBA.
  • د جوړ شوي VBA ټولګیو او دندو لیست به څرګند شي. د کړکۍ په پای کې د لنډ توضیحاتو ښودلو لپاره د فعالیت نوم باندې کلیک وکړئ. فشار ورکول F1 د دې ځانګړتیا لپاره به د آنلاین مرستې پاڼه پرانیزي.

برسېره پردې، د مثالونو سره د جوړ شوي VBA دندو بشپړ لیست د لید بنسټیز پراختیا کونکي مرکز کې موندل کیدی شي.

په VBA کې د ګمرک طرزالعملونه "فعال" او "فرعي".

په Excel Visual Basic کې، د کمانډونو سیټ چې یو ځانګړی دنده ترسره کوي په یوه کړنالره کې ځای پرځای شوي. دنده (فعال) یا فرعي (Subroutine). د پروسیجرونو تر مینځ اصلي توپیر دنده и فرعي دا کړنلاره ده دنده پایله بیرته راګرځوي، کړنلاره فرعي – نه.

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

دلیلونه

مختلف معلومات د دلیلونو په کارولو سره د VBA پروسیجرونو ته لیږدول کیدی شي. د استدلال لیست مشخص شوی کله چې د کړنلارې اعلان کول. د مثال په توګه، طرزالعمل فرعي په VBA کې په ټاکل شوي حد کې هرې حجرې ته ورکړل شوی عدد (Integer) اضافه کوي. تاسو کولی شئ دا شمیره د استدلال په کارولو سره پروسې ته انتقال کړئ، لکه:

فرعي AddToCells(i د عدد په توګه) ... پای فرعي

په پام کې ونیسئ چې د پروسیجرونو لپاره دلیلونه ولرئ دنده и فرعي په VBA کې اختیاري دی. ځینې ​​کړنلارې دلیلونو ته اړتیا نلري.

اختیاري دلیلونه

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

مخکیني مثال ته راستنیدل، د یو اختیاري فنکشن لپاره د بشپړ دلیل کولو لپاره، دا به داسې اعلان شي:

فرعي AddToCells (اختیاري i د عدد = 0 په توګه)

په دې حالت کې، د انټیجر دلیل i ډیفالټ به 0 وي.

په یوه کړنلاره کې ډیری اختیاري دلیلونه کیدی شي، چې ټول یې د دلیل لیست په پای کې لیست شوي دي.

د ارزښت او حوالې له مخې د دلیلونو تیریدل

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

  • د وال لخوا – د ارزښت له مخې دلیل وړاندې کول. دا پدې مانا ده چې یوازې ارزښت (یعنې د دلیل یوه کاپي) پروسیجر ته لیږدول کیږي، او له همدې امله د کړنالرې دننه دلیل کې کوم بدلونونه به له لاسه ورکړي کله چې پروسیجر بهر شي.
  • بای ریف - د حوالې په واسطه د استدلال تیریدل. دا دی، په حافظه کې د دلیل موقعیت اصلي پته پروسیجر ته لیږدول کیږي. د کړنلارې دننه د دلیل لپاره کوم بدلونونه به خوندي شي کله چې پروسیجر بهر شي.

د کلیدي کلمو کارول د وال لخوا or بای ریف د طرزالعمل په اعالمیه کې، تاسو کولی شئ مشخص کړئ چې څنګه استدلال پروسې ته لیږدول کیږي. دا په لاندې مثالونو کې ښودل شوي:

فرعي AddToCells(ByVal i As Integer) ... پای فرعي
په دې حالت کې، د انټیجر دلیل i د ارزښت له مخې تېر شو. د کړنلارې پریښودو وروسته فرعي ټول سره جوړ شوي i بدلونونه به ورک شي.
Sub AddToCells(ByRef i As Integer) ... پای فرعي
په دې حالت کې، د انټیجر دلیل i د حوالې لخوا تیریږي. د کړنلارې پریښودو وروسته فرعي ټول سره جوړ شوي i بدلونونه به په هغه متغیر کې زیرمه شي چې پروسیجر ته لیږدول شوي فرعي.

په یاد ولرئ چې په VBA کې دلیلونه د ډیفالټ لخوا د حوالې لخوا تیریږي. په بل عبارت، که کلیدي کلمې نه کارول کیږي د وال لخوا or بای ریف، بیا به دلیل د حوالې لخوا تیریږي.

مخکې له دې چې د پروسیجرونو سره مخ شئ دنده и فرعي په ډیر تفصیل سره، دا به ګټور وي چې د دې دوه ډوله طرزالعملونو ترمنځ ځانګړتیاوو او توپیرونو ته یو بل نظر واچوو. لاندې د VBA طرزالعملونو لنډ بحثونه دي دنده и فرعي او ساده مثالونه ښودل شوي.

د VBA کړنلاره "فعالیت"

د VBA مدیر پروسیجر پیژني دندهکله چې دا د لاندې پرانستلو او تړلو بیاناتو تر مینځ تړل شوي د قوماندې یوې ډلې سره مخ کیږي:

فنکشن ... پای فنکشن

لکه څنګه چې مخکې یادونه وشوه، طرزالعمل دنده په VBA کې (لکه څنګه چې مخالف فرعي) ارزښت راګرځوي. لاندې قواعد د بیرته ستنیدو ارزښتونو باندې پلي کیږي:

  • د بیرته ستنیدو ارزښت ډیټا ډول باید د پروسې په سر کې اعلان شي دنده.
  • هغه متغیر چې د بیرته ستنیدو ارزښت لري باید د پروسې په څیر ورته نوم ورکړل شي دنده. دا متغیر اړتیا نه لري چې په جلا توګه اعلان شي، ځکه چې دا تل د پروسې د یوې برخې په توګه شتون لري. دنده.

دا په لاندې مثال کې ښه روښانه شوی.

د VBA فعالیت بیلګه: په 3 شمیرو کې د ریاضيیک عملیات ترسره کول

لاندې د VBA طرزالعمل کوډ یوه بیلګه ده دنده، کوم چې درې ډوله دلیلونه اخلي Double (دوه دقت د فلوټینګ پوائنټ شمیرې). د پایلې په توګه، طرزالعمل د بل ډول ډول بیرته راګرځوي Doubleد لومړي دوه دلیلونو مجموعې سره مساوي د دریم دلیل منفي:

د فنکشن SumMinus(dNum1 لکه دوه چنده، dNum2 لکه دوه چنده، dNum3 لکه دوه چنده) لکه د ډبل SumMinus = dNum1 + dNum2 - dNum3 پای فنکشن

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

د VBA طرزالعمل "فعالیت" بلل کیږي

که پورته ساده کړنلاره دنده د بصری اساسی مدیر کې ماډل کې داخل شوی، دا د نورو VBA پروسیجرونو څخه غوښتنه کیدی شي یا د Excel کاري کتاب کې په کاري پاڼه کې کارول کیدی شي.

د بل طرزالعمل څخه د VBA طرزالعمل "فنکشن" ته زنګ ووهئ

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

فرعي اصلي () کم مجموعه د دوه ګوني مجموعه = SumMinus (5, 4, 3) پای فرعي

د کاري پاڼې څخه د VBA طرزالعمل "فنکشن" ته زنګ ووهئ

د VBA کړنلاره دنده د ایکسل ورک شیټ څخه په ورته ډول د بل جوړ شوي Excel فنکشن په څیر ویل کیدی شي. له همدې امله، طرزالعمل په تیرو مثال کې رامینځته شوی دنده - سمینس د کاري پاڼې حجرې ته د لاندې بیان په داخلولو سره ویل کیدی شي:

=SumMinus(10, 5, 2)

د VBA کړنلاره "فرعي"

د VBA مدیر پوهیږي چې د هغې په وړاندې یو پروسیجر شتون لري فرعيکله چې دا د لاندې پرانستلو او تړلو بیاناتو تر مینځ تړل شوي د قوماندې یوې ډلې سره مخ کیږي:

فرعي ... پای سب

د VBA کړنلاره "فرعي": مثال 1. د حجرو په ټاکل شوي سلسله کې د مرکز ترتیب او د فونټ اندازه بدلول

د ساده VBA طرزالعمل یوه بیلګه په پام کې ونیسئ فرعي، چې دنده یې د حجرو د ټاکل شوي سلسلې بڼه بدلول دي. حجرې متمرکزې دي (دواړه عمودي او افقي) او د فونټ اندازه د کارونکي لخوا ټاکل شوي ته بدلیږي:

Sub Format_Centered_And_Sized(اختیاري iFontSize د عدد = 10 په توګه) انتخاب. افقی ترتیب = xlCenter انتخاب. عمودی ترتیب = xlCenter انتخاب.Font.Size = iFontSize پای فرعي

دا کړنلاره فرعي عملونه ترسره کوي مګر نتیجه نه ورکوي.

دا مثال د اختیاري دلیل هم کاروي د فونټ اندازه. که دلیل د فونټ اندازه طرزالعمل ته نه سپارل کیږي فرعي, نو بیا یې اصلي ارزښت 10 دی. په هرصورت، که دلیل وي د فونټ اندازه طرزالعمل ته سپارل شوی فرعي، بیا د حجرو ټاکل شوې لړۍ به د کارونکي لخوا ټاکل شوي فونټ اندازې ته تنظیم شي.

د VBA فرعي پروسیجر: 2 بیلګه: د حجرو په ټاکل شوي سلسله کې د مرکز سیده او بولډ فونټ

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

Sub Format_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = ریښتیني پای فرعي

په Excel VBA کې د "فرعي" طرزالعمل زنګ وهل

د بل طرزالعمل څخه د VBA طرزالعمل "فرعي" ته زنګ ووهئ

د VBA طرزالعمل ته زنګ ووهئ فرعي د بل VBA طرزالعمل څخه، تاسو اړتیا لرئ کلیدي ولیکئ غوښتنهد طرزالعمل نوم فرعي او نور په قوسونو کې د طرزالعمل دلیلونه دي. دا په لاندې مثال کې ښودل شوی:

فرعي اصلي () د کال فارمټ_مرکز_او_سیز (20) پای فرعي

که کړنلاره Format_Centered_and_Sized له یو څخه زیات دلیلونه لري، دوی باید د کوما په واسطه جلا شي. لکه دغه:

فرعي اصلي () د کال فارمټ_مرکز_او_سیز (arg1, arg2, ...) پای فرعي

د کاري پاڼې څخه د VBA طرزالعمل "فرعي" ته زنګ ووهئ

کړنلاره فرعي په مستقیم ډول د Excel شیټ حجرې ته نشي ننوتلی، لکه څنګه چې د پروسې سره ترسره کیدی شي دندهځکه چې کړنلاره فرعي ارزښت نه راګرځوي. په هرصورت، طرزالعملونه فرعي، کوم چې هیڅ دلیل نلري او په توګه اعلان شوي د عامې (لکه څنګه چې لاندې ښودل شوي) به د کاري پاڼې کاروونکو ته شتون ولري. په دې توګه، که ساده طرزالعملونه پورته بحث شوي فرعي په Visual Basic Editor کې په یو ماډل کې داخل شوی، طرزالعمل شکل_مرکزی_او_بولی د ایکسل کاري پاڼې، او پروسیجر کې به د کارولو لپاره شتون ولري Format_Centered_and_Sized - شتون نلري ځکه چې دا دلیلونه لري.

دلته د پروسیجر چلولو (یا اجرا کولو) اسانه لار ده فرعيد کاري پاڼې څخه د لاسرسي وړ:

  • مطبوعاتي Alt + F8 (کیلي فشار ورکړئ alt او په داسې حال کې چې دا لاندې ونیسئ، کیلي فشار ورکړئ F8).
  • د مایکرو په لیست کې چې ښکاري، هغه غوره کړئ چې تاسو یې غواړئ پرمخ بوځي.
  • مطبوعاتي د دويم (چلول)

د کړنلارې ترسره کولو لپاره فرعي ګړندی او په اسانۍ سره ، تاسو کولی شئ دې ته د کیبورډ شارټ کټ وټاکئ. د دى لپاره:

  • مطبوعاتي Alt + F8.
  • د میکرو لیست کې چې څرګندیږي ، هغه غوره کړئ چې تاسو یې غواړئ د کیبورډ شارټ کټ وټاکئ.
  • مطبوعاتي پارامترونو (اختیارونه) او د ډیالوګ بکس کې چې ښکاري، د کیبورډ شارټ کټ دننه کړئ.
  • مطبوعاتي OK او ډیالوګ بند کړئ مکرو (ماکرو).

پاملرنه: کله چې میکرو ته د کیبورډ شارټ کټ وټاکئ، ډاډ ترلاسه کړئ چې دا په Excel کې د معیاري په توګه نه کارول کیږي (د مثال په توګه، Ctrl + C). که تاسو دمخه موجود کیبورډ شارټ کټ غوره کړئ ، نو دا به میکرو ته بیا واستول شي ، او د پایلې په توګه ، کارونکي ممکن په ناڅاپي ډول میکرو پیل کړي.

د VBA طرزالعمل ساحه

د دې ټیوټوریل 2 برخه د متغیرونو او مستقلاتو ساحه او د کلیدي کلمو رول په اړه بحث وکړ. د عامې и د خصوصي. دا کلیمې د VBA پروسیجرونو سره هم کارول کیدی شي:

عامه فرعي AddToCells(i د عدد په توګه) ... پای فرعي
که چیرې د کړنلارې اعلامیه د کلیدي کلمې څخه مخکې وي د عامې، بیا به طرزالعمل د VBA پروژې ټولو ماډلونو ته شتون ولري.
شخصي فرعي AddToCells(i د عدد په توګه) ... پای فرعي
که چیرې د کړنلارې اعلامیه د کلیدي کلمې څخه مخکې وي د خصوصينو بیا دا کړنلاره به یوازې د اوسني ماډل لپاره شتون ولري. دا نشي ویل کیدی پداسې حال کې چې په کوم بل ماډل کې یا د ایکسل کاري کتاب څخه.

په یاد ولرئ چې که مخکې له دې چې د VBA کړنالرې اعلان کړي دنده or فرعي کلیدي کلمه نه ده داخل شوې، اصلي ملکیت د طرزالعمل لپاره ټاکل شوی د عامې (دا، دا به د VBA پروژې په هر ځای کې شتون ولري). دا د متغیر اعالنونو سره مخالف دی، کوم چې په ډیفالټ ډول دي د خصوصي.

د VBA پروسیجرونو "فنکشن" او "فرعي" څخه دمخه وتل

که تاسو اړتیا لرئ د VBA طرزالعمل اجرا کول پای ته ورسوئ دنده or فرعي، پرته له دې چې طبیعي پای ته انتظار وباسي ، نو د دې لپاره چلونکي شتون لري د وتلو فعالیت и د وتلو فرعي. د دې آپریټرونو کارول د مثال په توګه د ساده طرزالعمل په کارولو سره لاندې ښودل شوي. دندهA چې تمه لري د نورو عملیاتو ترسره کولو لپاره مثبت دلیل ترلاسه کړي. که یو غیر مثبت ارزښت پروسیجر ته لیږدول کیږي، نو نور عملیات نشي ترسره کیدی، نو کارونکي ته باید د خطا پیغام وښودل شي او پروسیجر باید سمدلاسه ودریږي:

فنکشن VAT_Amount(sVAT_Rate As single) د واحد په توګه VAT_Amount = 0 که sVAT_Rate <= 0 نو بیا MsgBox "د sVAT_Rate مثبت ارزښت تمه کیده مګر ترلاسه شوې" & sVAT_Rate د وتلو فنکشن پای که ... پای فنکشن

مهرباني وکړئ په یاد ولرئ چې د پروسې بشپړولو دمخه دنده - VAT_Amount، یو جوړ شوی VBA فنکشن په کوډ کې داخل شوی MsgBox، کوم چې کارونکي ته د خبرتیا پاپ اپ ښیې.

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