کړی
- جوړ شوی VBA افعال
- په VBA کې د ګمرک طرزالعملونه "فعال" او "فرعي".
- دلیلونه
- د VBA کړنلاره "فعالیت"
- د VBA کړنلاره "فرعي"
- د VBA طرزالعمل ساحه
- د 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، کوم چې کارونکي ته د خبرتیا پاپ اپ ښیې.