بهترین راهنمای VBA (برای مبتدیان) که تا به حال به آن نیاز دارید

پلت فرم برنامه نویسی VBA(VBA programming) که تقریباً در تمام محصولات مایکروسافت آفیس(Microsoft Office) اجرا می شود ، یکی از قدرتمندترین ابزارهایی است که هر کسی می تواند برای افزایش استفاده از آن محصولات استفاده کند.

این راهنمای VBA برای مبتدیان به شما نشان می دهد که چگونه منوی Developer را به برنامه (Developer)آفیس(Office) خود اضافه کنید ، چگونه وارد پنجره ویرایشگر VBA شوید، و چگونه عبارات و حلقه های اولیه (VBA)VBA کار می کنند تا بتوانید استفاده از VBA را در Excel ، Word ، Powerpoint شروع کنید . Outlook و OneNote .

این راهنمای VBA از آخرین نسخه محصولات Microsoft Office استفاده می کند. اگر نسخه قبلی دارید، ممکن است تفاوت های جزئی با تصاویر مشاهده کنید.

نحوه فعال کردن و استفاده از ویرایشگر VBA(How To Enable & Use The VBA Editor)

در هر یک از محصولات آفیس(Office) استفاده شده در این راهنما، ممکن است متوجه شوید که منوی Developer ارجاع شده را ندارید. (Developer)منوی برنامه نویس فقط در Excel ، Word ، Outlook و Powerpoint موجود است. OneNote ابزاری برای ویرایش کد VBA از داخل برنامه ارائه نمی دهد، اما همچنان می توانید برای تعامل با OneNote از سایر برنامه های Office به (Office)OneNote API مراجعه کنید. 

نحوه انجام این کار را در راهنمای VBA پیشرفته آینده ما خواهید آموخت.(Advanced VBA)

  • برای فعال کردن منوی Developer در هر محصول اداری، منوی File را انتخاب کنید و از منوی ناوبری سمت چپ  گزینه ها را انتخاب کنید.(Options)
  • یک منوی گزینه ها(Options) را خواهید دید . از منوی ناوبری سمت چپ گزینه Customize Ribbon را انتخاب کنید.(Customize Ribbon)

لیست سمت چپ شامل تمام منوهای موجود و دستورات منوی موجود در آن برنامه Office است. لیست سمت راست مواردی هستند که در حال حاضر در دسترس یا فعال هستند.

  • شما باید Developer را در لیست سمت راست ببینید، اما فعال نمی شود. برای فعال کردن منوی Developer کافیست کادر را انتخاب کنید.(Just)

  • اگر برنامه‌نویس(Developer) را در سمت راست نمی‌بینید ، دستورات انتخاب(Choose commands) سمت چپ را از کشویی به همه(All Commands) فرمان‌ها تغییر دهید . Developer را از لیست پیدا کنید و Add>> را در مرکز انتخاب کنید تا آن منو به Ribbon اضافه شود.
  • وقتی کارتان تمام شد، تأیید(OK) را انتخاب کنید .
  • پس از فعال شدن منوی Developer ، می توانید به پنجره اصلی برنامه خود برگردید و از منوی بالا،  Developer را انتخاب کنید.(Developer)
  • سپس از گروه Controls در نوار، View Code را انتخاب کنید تا پنجره ویرایشگر VBA باز شود.(VBA)

  • با این کار پنجره ویرایشگر VBA باز می شود که در آن می توانید کدی را که در چند بخش بعدی یاد خواهید گرفت تایپ کنید.

  • سعی کنید منوی Developer را به تعدادی از برنامه های Office که هر روز استفاده می کنید اضافه کنید. پس از باز کردن پنجره ویرایشگر VBA ، به بخش بعدی این راهنما ادامه دهید.

نکات عمومی برنامه نویسی VBA برای مبتدیان(General VBA Programming Tips for Beginners)

متوجه خواهید شد که وقتی ویرایشگر VBA باز می شود، گزینه های پیمایش در پانل سمت چپ از یک برنامه آفیس(Office) به برنامه دیگر متفاوت به نظر می رسند.

این به این دلیل است که اشیاء موجود که می توانید کد VBA را در آن قرار دهید به اشیایی که در برنامه وجود دارد بستگی دارد. به عنوان مثال، در اکسل(Excel) ، می توانید کد VBA را به کتاب کار یا شیت شیت اضافه کنید. در Word می توانید کد VBA را به اسناد اضافه کنید. در پاورپوینت(Powerpoint) ، فقط به ماژول ها.

بنابراین، از منوهای مختلف تعجب نکنید. ساختار و نحو کد VBA در همه برنامه ها یکسان است. تنها تفاوت اشیایی است که می توانید به آنها ارجاع دهید و اقداماتی که می توانید روی آن اشیا از طریق کد VBA انجام دهید.(VBA)

قبل از اینکه به اشیاء و اقدامات مختلفی که می‌توانید از طریق کد VBA روی آنها انجام دهید بپردازیم، ابتدا به رایج‌ترین ساختار و نحو VBA که می‌توانید هنگام نوشتن کد VBA استفاده کنید، نگاهی بیاندازیم .

کجا کد VBA را قرار دهیم(Where To Put VBA Code)

هنگامی که در ویرایشگر VBA هستید، باید از دو کادر کشویی در بالای پنجره ویرایش استفاده کنید تا انتخاب کنید که کد را به کدام شی ضمیمه کنید و زمانی که می خواهید کد اجرا شود.

به عنوان مثال، در اکسل(Excel) ، اگر کاربرگ(Worksheet) و فعال سازی(Activate) را انتخاب کنید ، هر زمان که کاربرگ باز شود، کد اجرا می شود. 

سایر اقدامات کاربرگ که می توانید برای فعال کردن کد VBA خود استفاده کنید عبارتند از: زمانی که کاربرگ تغییر می کند، زمانی که کاربرگ بسته می شود (غیرفعال می شود)، زمانی که محاسبه کاربرگ اجرا می شود و موارد دیگر.

وقتی کد VBA را در ویرایشگر اضافه می کنید، همیشه مطمئن شوید که کد VBA خود را روی شی قرار دهید و از عملکرد صحیحی که می خواهید برای راه اندازی آن کد استفاده کنید، استفاده کنید.

بیانیه های VBA IF(VBA IF Statements)

دستور IF در VBA درست مانند هر زبان برنامه نویسی دیگری کار می کند.

بخش اول عبارت IF به درستی یک شرط یا مجموعه ای از شرایط می پردازد. این شرایط را می توان توسط یک اپراتور AND یا OR ملحق کرد تا آنها را به یکدیگر پیوند دهد.(AND)

یک مثال می تواند بررسی این باشد که آیا یک نمره در یک صفحه گسترده بالاتر یا پایین تر از نمره قبولی است یا خیر، و تخصیص وضعیت قبولی یا عدم موفقیت به سلول دیگری.

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

اگر نمی‌خواهید کل عبارت در یک خط باشد، می‌توانید با اضافه کردن علامت «_» در انتهای خطوط، آن را به چند خط تقسیم کنید.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

استفاده از این تکنیک اغلب می تواند خواندن و اشکال زدایی کد را بسیار آسان تر کند.

VBA برای حلقه های بعدی(VBA For Next Loops)

عبارات IF برای مقایسه های تکی عالی هستند، مانند مثال بالا در مورد نگاه کردن به یک سلول. اما اگر بخواهید از میان طیف وسیعی از سلول ها حلقه بزنید و همان دستور IF را روی هر کدام انجام دهید، چه؟

در این مورد به یک حلقه  FOR نیاز دارید .

برای انجام این کار، باید از طول یک محدوده استفاده کنید و آن طول را با تعداد ردیف هایی که حاوی داده هستند حلقه بزنید.

برای انجام این کار، باید محدوده و متغیرهای سلول را تعریف کنید و آنها را حلقه بزنید. همچنین باید یک شمارنده تعریف کنید تا بتوانید نتایج را به سطر مناسب خروجی دهید. بنابراین کد VBA شما ابتدا این خط را خواهد داشت.

کم نور rng به عنوان محدوده، سلول به عنوان محدوده (Dim rng As Range, cell As Range)
کم نور شمارش ردیف ردیف به عنوان عدد صحیح(Dim rowCounter as Integer)

اندازه محدوده را به صورت زیر تعریف کنید. 

Set rng = Range(“B2:B7”)
rowCounter = 2

در نهایت، می توانید حلقه FOR خود را ایجاد کنید تا از هر سلول در آن محدوده عبور کرده و مقایسه را انجام دهید.

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

هنگامی که این اسکریپت VBA(VBA script) اجرا می شود، نتایج را در صفحه گسترده واقعی می بینید.

VBA while Loops

حلقه(Loop) while نیز مانند حلقه FOR از طریق یک سری عبارات حلقه می زند، اما شرط حلقه برای ادامه، شرطی است که درست باقی می ماند.

به عنوان مثال، می توانید همان حلقه FOR را در بالا، به عنوان یک حلقه WHILE ، با استفاده از متغیر rowCounter به صورت زیر بنویسید.

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

توجه: حد rng.Count + 2 لازم است زیرا شمارشگر ردیف از 2 شروع می شود و باید در ردیف 7 پایان یابد، جایی که داده ها به پایان می رسد. با این حال، تعداد محدوده (B2:B7) تنها 6 است، و حلقه while تنها زمانی پایان می‌یابد که شمارنده بزرگ‌تر(GREATER) از شمارنده باشد – بنابراین آخرین مقدار rowCounter باید 8 باشد (یا rng.Count + 2).

همچنین می توانید حلقه while را به صورت زیر تنظیم کنید:

While rowCounter <= rng.Count + 1

شما فقط می توانید تعداد محدوده (6) را 1 افزایش دهید، زیرا زمانی که متغیر rowCounter به پایان داده ها (ردیف 7) برسد، حلقه می تواند تمام شود.

VBA Do while و Do Until Loops(VBA Do While and Do Until Loops)

حلقه‌های Do while و Do Until تقریباً مشابه حلقه‌های while هستند، اما عملکرد کمی متفاوت دارند.

  • حلقه while(While Loop) بررسی می کند که آیا یک شرط در ابتدای حلقه درست است یا خیر.
  • حلقه Do-While(Do-While Loop) بررسی می کند که آیا یک شرط پس از اجرای دستورات در حلقه درست است یا خیر.
  • حلقه Do-Until(Do-Until Loop) بررسی می کند که آیا یک شرط پس از اجرای حلقه همچنان نادرست است یا خیر.

در این مورد، حلقه while در بالا را به صورت زیر، به عنوان یک حلقه Do-While بازنویسی می کنید.

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

در این مورد، منطق خیلی تغییر نمی کند، اما اگر می خواهید مطمئن شوید که مقایسه منطقی پس از اجرای همه دستورات انجام می شود (که به همه آنها اجازه می دهد بدون توجه به آنچه حداقل یک بار اجرا شوند)، سپس یک Do-While یا حلقه Do-Until گزینه مناسبی است.

VBA بیانیه های موردی را انتخاب کنید(VBA Select Case Statements)

نوع نهایی بیانیه منطقی که برای شروع ساختاردهی کد VBA خود باید بدانید، عبارت (VBA)Select Case است.

با توجه به مثال بالا، فرض کنید می‌خواهید یک روش درجه‌بندی داشته باشید که فقط شکست قبولی نباشد. درعوض، می‌خواهید یک نمره حرف از A تا F تعیین کنید.

می توانید این کار را با عبارت Select Case زیر انجام دهید :

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

صفحه گسترده حاصل پس از اجرای این اسکریپت VBA مانند شکل زیر است.

اکنون همه چیزهایی را که برای شروع استفاده از VBA در برنامه های مایکروسافت آفیس(Microsoft Office) باید بدانید، می دانید .



About the author

من یک متخصص کامپیوتر با بیش از 10 سال تجربه هستم و در کمک به افراد در مدیریت کامپیوترهایشان در دفترشان تخصص دارم. من مقالاتی در مورد موضوعاتی مانند نحوه بهینه سازی اتصال اینترنت خود، نحوه راه اندازی رایانه برای بهترین تجربه بازی و موارد دیگر نوشته ام. اگر در مورد هر چیزی که مربوط به کار یا زندگی شخصی خود است به دنبال کمک هستید، من آن شخص برای شما هستم!



Related posts