You are currently viewing اولین برنامه VBA | آموخته‌هایتان را بصورت عملی آزمون نمایید
اولین پروژه VBA در اکسل — محاسبه توان دوم عدد با InputBox

اولین برنامه VBA | آموخته‌هایتان را بصورت عملی آزمون نمایید

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

📑 فهرست مطالب

آنچه در این آموزش یاد خواهید گرفت

  • نحوه استفاده از InputBox برای دریافت ورودی از کاربر
  • انجام عملیات ریاضی (توان) در VBA
  • نحوه نمایش نتیجه با استفاده از MsgBox
  • ایجاد و اجرای یک ماکرو در اکسل

پیش‌نیازهای آموزشی این بخش:
ویرایشگر کد VBA
ماژول در VBA
متغیر در VBA
ثابت در VBA
عملگرهای VBA
اولویت عملگرها
روال در VBA
توابع توکار VBA
پنجره Immediate (آنی)

در آموزش‌های قبلی با مفاهیمی مانند ویرایشگر VBE، ماژول، متغیر، ثابت، عملگرها و روال‌ها آشنا شدیم. حالا وقت آن است که آموخته‌های خود را در قالب یک برنامه واقعی به کار بگیریم.

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

نکته: در تمام پروژه‌های سایت، مراحل طراحی را مطابق اصول برنامه‌نویسی پیش می‌بریم تا مهارت‌های شما به‌صورت گام‌به‌گام تقویت شود.

آیا می‌دانید:

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

اولین برنامه VBA

هدف برنامه

محاسبه توان دوم عددی که کاربر وارد می‌کند و نمایش نتیجه به‌صورت پیغام.

مراحل طراحی و اجرای برنامه

  • مرحله اول: تعریف دقیق مسئله (Problem Definition)
  • مرحله دوم: شناخت انواع داده‌ها و محدودیت‌ها (Understanding Data Types & Constraints)
  • مرحله سوم: بررسی سناریوهای غیرمنتظره (Handling Edge Cases)
  • مرحله چهارم: گام منطقی قبل از کدنویسی / طراحی الگوریتم (Algorithm Design / Logical Planning)
  • مرحله پنجم: مفهوم برنامه بی‌نقص و آماده بودن برای خطا (Concept of a Robust / Error-Resistant Program)
  • مرحله ششم: کدنویسی (Implementation / Coding)

مرحله اول: تعریف دقیق مسئله (Problem Definition)

مسئله این است که می‌خواهیم توان دوم یا مربع یک عدد را محاسبه کنیم. در دنیای عادی، این کار با باز کردن ماشین حساب یا ضرب عدد در خودش انجام می‌شود. در دنیای برنامه‌نویسی، مسئله فقط محاسبه نیست؛ بلکه ملاحظات دیگری نیز وجود دارد که باید در نظر گرفته شوند.

ملاحظات اصلی:

  1. کاربر (User): چه کسی یا چه چیزی عدد را وارد می‌کند و چه انتظاری از نتیجه دارد؟ رفتار کاربر را چطور باید مدیریت نمود که برنامه به هدف برسد و با خطا مواجه نشود؟
  2. ورودی داده (Input Data): چه نوع داده‌ای وارد می‌شود و چه محدودیت‌هایی دارد؟
  3. پردازش داده (Data Processing): چگونه داده ورودی به خروجی تبدیل می‌شود و منطق آن چیست؟
  4. خروجی (Output): نتیجه چگونه نمایش داده می‌شود یا در کجا استفاده می‌شود؟

مرحله دوم: شناخت انواع داده‌ها و محدودیت‌ها (Understanding Data Types & Constraints)

بعد از اینکه مسئله را تعریف کردیم، باید بدانیم برنامه ما چه داده‌هایی را می‌تواند دریافت کند و چه محدودیت‌هایی وجود دارد. حتی برای محاسبه توان دوم، این مرحله ضروری است تا برنامه بی‌نقص و مقاوم باشد.

ملاحظات اصلی:

  1. نوع داده ورودی (Input Type): آیا برنامه عدد صحیح، اعشاری، منفی یا مثبت را قبول می‌کند؟
  2. محدودیت‌های ورودی (Input Constraints): چه چیزی غیرمجاز است و چگونه باید برنامه با آن رفتار کند؟ (مثلاً متن یا ورودی خالی)
  3. انتظارات کاربر (User Expectation): کاربر انتظار دارد چه چیزی رخ دهد وقتی ورودی غیرمجاز وارد شود؟
  4. پیش‌بینی خطا (Error Handling Consideration): برنامه باید چگونه واکنش نشان دهد تا کاربر گیج نشود و برنامه خراب نشود؟

حتی برای مسئله‌ای ساده، برنامه‌نویسی یعنی فکر کردن به همه شرایط ممکن؛ نه فقط محاسبه عدد. شناخت داده‌ها و محدودیت‌ها، قدمی حیاتی برای رسیدن به یک برنامه پایدار و قابل اعتماد است.

مرحله سوم: بررسی سناریوهای غیرمنتظره (Handling Edge Cases)

یک برنامه حتی برای مسئله ساده مثل محاسبه توان دوم، باید بتواند با شرایط غیرمنتظره و ورودی‌های غیرمعمول درست رفتار کند. این مرحله باعث می‌شود برنامه مقاوم و بی‌نقص باشد و از خطاهای ناخواسته جلوگیری کند.

ملاحظات اصلی:

  1. ورودی خالی (Empty Input): چه اتفاقی می‌افتد اگر کاربر هیچ عددی وارد نکند؟
  2. ورودی نامعتبر (Invalid Input): اگر کاربر متنی وارد کند یا عددی خارج از محدوده منطقی بدهد، برنامه چگونه واکنش نشان دهد؟
  3. اعداد خاص (Special Numbers): اعداد منفی، صفر یا خیلی بزرگ ممکن است چه تاثیری روی پردازش داشته باشند؟
  4. پیش‌بینی رفتار برنامه (Program Behavior Prediction): برنامه باید در همه این شرایط بدون خراب شدن و با یک پیام مناسب واکنش نشان دهد.

این مرحله نشان می‌دهد که برنامه‌نویسی فقط محاسبه نیست؛ بلکه طراحی یک ماشین کوچک است که بتواند همه سناریوهای ممکن را پیش‌بینی کند و در مواجهه با شرایط غیرعادی پاسخ مناسبی بدهد.

مرحله چهارم: گام منطقی قبل از کدنویسی / طراحی الگوریتم (Algorithm Design / Logical Planning)

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

ملاحظات اصلی:

  1. تعیین مراحل پردازش (Processing Steps):
    • گرفتن ورودی از کاربر
    • بررسی اعتبار ورودی
    • محاسبه توان دوم
    • نمایش نتیجه به کاربر
  2. ترتیب منطقی عملیات (Logical Flow):
    هر مرحله باید به ترتیب مناسب انجام شود تا خروجی درست تولید شود.
  3. پیش‌بینی واکنش در شرایط غیرمعمول (Edge Case Handling in Flow):
    الگوریتم باید شامل نحوه برخورد با ورودی خالی یا نامعتبر باشد.
  4. سادگی و وضوح (Clarity & Simplicity):
    حتی یک برنامه ساده باید الگوریتم واضح و قابل پیگیری داشته باشد، طوری که یک انسان یا ماشین بتواند بدون ابهام مراحل را دنبال کند.

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

مرحله پنجم: مفهوم برنامه بی‌نقص و آماده بودن برای خطا (Concept of a Robust / Error-Resistant Program)

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

ملاحظات اصلی:

  1. ثبات برنامه (Program Stability):
    برنامه نباید با ورود داده غیرمنتظره یا خالی خراب شود.
  2. واکنش مناسب به خطاها (Error Handling):
    به جای کرش یا تولید خروجی اشتباه، پیام مناسب به کاربر نمایش داده شود یا برنامه به شکل کنترل‌شده متوقف شود.
  3. اعتماد کاربر (User Trust):
    برنامه بی‌نقص باعث می‌شود کاربر مطمئن باشد که هر بار با داده معتبر یا غیرمعتبر، نتیجه منطقی و قابل پیش‌بینی دریافت می‌کند.
  4. پیشگیری از مشکلات آینده (Future-Proofing):
    حتی اگر بعداً بخواهیم برنامه را گسترش دهیم، رعایت این اصول باعث می‌شود که افزودن ویژگی‌های جدید آسان‌تر و کم‌خطاتر باشد.

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

مرحله ششم: کدنویسی (Implementation / Coding)

در این مرحله، الگوریتم و تفکری که در مراحل ۱ تا ۵ طراحی شد، به دستورات واقعی در زبان یا محیط برنامه‌نویسی VBA تبدیل می‌شود. حتی برای یک برنامه ساده مثل محاسبه توان دوم، رعایت گام‌های زیر باعث می‌شود برنامه پایدار، قابل فهم و قابل توسعه باشد.

گام ۱: ایجاد یک روال اجرایی

در VBA هیچ دستوری به‌صورت مستقل اجرا نمی‌شود. تمام کدها باید داخل روال‌ها (Routines) قرار بگیرند تا اکسل بداند از کجا برنامه را شروع کند و در کجا به پایان برسد.

روال در واقع مثل چارچوب اصلی برنامه است. ما داخل آن می‌نویسیم که برنامه چه کارهایی انجام دهد و به چه ترتیبی.

همانطور که در آموزش روال در VBA | تعریف روال و انواع آن در ویژوال بیسیک بررسی کردیم، دو نوع روال اصلی داریم:

  1. Sub (ساب) → برای کارهایی که فقط انجام می‌شوند و نتیجه را نمایش می‌دهند.
  2. Function (تابع) → برای محاسبه و برگرداندن نتیجه به قسمت دیگری از برنامه (مثلاً داخل سلول اکسل).

در برنامه‌ای مثل محاسبه توان دوم، هدف ما فقط اجرای یک فرآیند ساده و نمایش نتیجه به کاربر است، نه بازگرداندن مقدار به سلول یا تابع دیگر.
به همین دلیل، انتخاب روال Sub منطقی‌تر است، چون:

  • به‌صورت مستقیم قابل اجراست،
  • نیازی به بازگرداندن مقدار ندارد،

ساختار کلی یک Sub به‌صورت زیر است:

Sub نام_روال()
    ' این بخش جایی است که دستورات برنامه نوشته می‌شوند
End Sub

برای برنامهٔ خودمان، نام SquareNumber را انتخاب می‌کنیم.
این نام از دو بخش تشکیل شده است:

  • Square به معنی “توان دوم”
  • Number به معنی “عدد”

این نام‌گذاری باعث می‌شود حتی کسی که به کد نگاه می‌کند، بدون توضیح اضافی متوجه شود که این روال چه کاری انجام می‌دهد.

بنابراین، شروع برنامه ما چنین خواهد بود:

Sub SquareNumber()
    ' در مراحل بعدی کد محاسبه و نمایش توان دوم در اینجا نوشته می‌شود
End Sub

در این مرحله، ما چارچوب اصلی برنامه را ایجاد کردیم. از گام بعدی به بعد، منطق درون این چارچوب را تکمیل می‌کنیم — یعنی تعریف متغیر، دریافت ورودی و محاسبه نتیجه.

گام ۲: گرفتن ورودی از کاربر

language-vba

در هر برنامه، ورودی (Input) نقطه‌ی شروع کار است. برنامه بدون داده، نمی‌تواند هیچ پردازشی انجام دهد. در این مثال، ما باید عددی را از کاربر بگیریم تا توان دوم آن را محاسبه کنیم.

تعریف متغیر برای نگهداری داده

قبل از گرفتن ورودی، باید جایی برای نگهداری آن داشته باشیم — یعنی متغیر (Variable).
در VBA برای تعریف متغیر از دستور Dim استفاده می‌کنیم:

Dim userInput As String

اینجا متغیری به نام userInput تعریف کردیم تا ورودی کاربر در آن ذخیره شود.

گرفتن مقدار از کاربر

برای دریافت داده از کاربر روش‌های مختلفی وجود دارد:

  1. دریافت داده از سلول‌های اکسل
    اگر ورودی در شیت وارد می‌شود، می‌توان آن را مستقیماً از سلول خواند. بعنوان مثال کد زیر مقدار ورودی را مستقیما از سلول A1 اکسل می‌خواند:
userInput = Range("A1").Value
  1. استفاده از فرم کاربری (UserForm)
    فرم‌های گرافیکی شامل جعبه متن، دکمه و سایر کنترل‌ها هستند و برای برنامه‌های بزرگ‌تر مناسب‌اند.
  2. گرفتن ورودی با InputBox
    تابع InputBox ساده‌ترین روش برای دریافت مقدار از کاربر در VBA است. این تابع یک پنجره باز می‌کند و از کاربر می‌خواهد مقداری وارد کند. در این برنامه ما از این روش برای دریافت ورودی کاربر استفاده می‌کنیم.
userInput = InputBox("لطفاً عدد مورد نظر خود را وارد کنید:")

پس از تأیید، مقدار واردشده در متغیر userInput ذخیره می‌شود و آماده پردازش در گام بعد است. متغیر userInput را از نوع String تعریف کردیم چرا که مقدار بازگشتی تابع InputBox یک مقدار String است.

برای مطالعه بیشتر در مورد نوع داده‌ها در VBA می‌توانید این صفحه را مشاهده نمایید.

توجه داشته باشید که ویرایشگر VBE از یک ویژگی تکمیل خودکار پیشرفته و همچنین نمایش اطلاعات و ویژگی‌ها بهره‌گیری می‌نماید.

شما می‌توانید به هنگام تایپ کد از ویژگی تکمیل خودکار برای کاهش بروز خطاهای تایپی و سرعت در نوشتن کدها و از ویژگی نمایش اطلاعات در مورد توابع و اشیاء برای نوشتن کدهای صحیح بهره بگیرید.

بعنوان مثال بهنگام نوشتن تابع InputBox ویرایشگر VBE اطلاعاتی را مانند شکل زیر نمایش خواهد داد:

ویژگی پیشرفته VBE در نمایش اطلاعات تابع InputBox
VBE اطلاعات تابع InputBox را بعد از تایپ پرانتز اول نمایش خواهد داد.

طبق اطلاعاتی که VBE برای تابع InputBox نمایش می‌دهد این تابع مقدار بازگشتی نوع String دارد و ۷ آرگومان دارد که فقط آرگومان اول آن (Prompt) اجباری می‌باشد.

در صورتی که نوع داده متغیر userInput را به اشتباه از نوع داده عددی (بعنوان مثال Integer یا Double) انتخاب نمایید و کاربر مقدار غیرعددی وارد نماید خطای کامپایلر عدم تطابق نوع داده (Error 13) مطابق شکل زیر توسط کامپایلر ایجاد و برنامه شما متوقف خواهد گردید.

خطای شماره 13 در اکسل (Run-time error 13)
بروز خطای شماره ۱۳ بهنگام تخصیص مقدار اشتباه به متغیر در اکسل

در این مرحله یاد گرفتیم:

  • چطور متغیر رشته‌ای تعریف کنیم
  • چه روش‌هایی برای گرفتن ورودی در VBA وجود دارد
  • و چگونه با InputBox یک مقدار از کاربر دریافت کنیم

کد فعلی برنامه ما تا اینجا:

Sub SquareNumber()
    Dim userInput As String
    userInput = InputBox("لطفاً عدد مورد نظر خود را وارد کنید:")
End Sub

گام ۳: اعتبارسنجی ورودی کاربر

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

نکته مهم درباره Cancel
  • وقتی کاربر دکمه Cancel را می‌زند، InputBox مقدار رشته خالی (“”) برمی‌گرداند.
  • همچنین اگر کاربر مقدار وارد نکند و Enter بزند، همان رشته خالی برمی‌گردد.
  • بنابراین بررسی رشته خالی هم شامل Cancel و هم ورودی خالی می‌شود.
مراحل اعتبارسنجی
  1. ورودی ابتدا به صورت رشته (String) دریافت می‌شود.
  2. بررسی می‌کنیم که رشته خالی نباشد (شامل Cancel). برای این منظور کد زیر را برای بررسی مقدار متغیر userInput به برنامه خودمان اضافه می‌کنیم. در این کد اگر مقدار متغیر userInput برابر با یک رشته خالی "" پیغام هشدار به کاربر نمایش داده می‌شود و از با استفاده از Exit Sub از برنامه خارج می‌شویم.
If userInput = "" Then
    MsgBox "ورودی خالی است یا کاربر Cancel زده است.", vbExclamation
    Exit Sub
End If
  1. بررسی می‌کنیم که رشته عددی باشد. برای بررسی عدد بودن ورودی کاربر از تابع IsNumeric استفاده می‌نماییم. تابع IsNumeric یک عبارت Expression را بررسی می‌کند و در صورتی که این عبارت یک مقدار عددی باشد True و در غیراینصورت False برمی‌گرداند. کد زیر را برای همین منظور به برنامه خود اضافه می‌کنیم:
If Not IsNumeric(userInput) Then
    MsgBox "ورودی معتبر نیست. لطفاً یک عدد وارد کنید.", vbExclamation
    Exit Sub
End If
  • در کد بالا در صورتی که مقدار متغیر userInput عددی نباشد پیغام “ورودی معتبر نیست. لطفاً یک عدد وارد کنید.” به کاربر نمایش داده و برنامه متوقف می‌شود.
  1. تبدیل ورودی کاربر به مقدار عددی. در گام قبل ورودی کاربر را در یک متغیر String بنام userInput ذخیره نمودیم. برای اینکه بتوانیم روی مقدار ورودی کاربر عملیات ریاضی انجام دهیم باید آن را از نوع String به یک نوع عددی مثل Double تبدیل نماییم. برای این منظور یک متغیر جدید به نام num و Double تعریف می‌کنیم و با استفاده از تابع CDbl نوع داده متغیر userInput را به نوع داده Double تبدیل و در متغیر num ذخیره می‌نماییم.
Dim num As Double
num = CDbl(userInput)

برای مطالعه بیشتر در مورد توابع توکار VBA می‌توانید این صفحه را مشاهده نمایید.

کد فعلی برنامه ما تا اینجا:

Sub SquareNumber()
    Dim userInput As String  ' ابتدا ورودی به صورت رشته دریافت می‌شود
    Dim num As Double        ' متغیر برای نگهداری عدد پس از اعتبارسنجی
    
    ' گرفتن ورودی از کاربر
    userInput = InputBox("لطفاً عدد مورد نظر خود را وارد کنید:")
    
    ' اعتبارسنجی ورودی
    If userInput = "" Then
        MsgBox "ورودی خالی است یا کاربر Cancel زده است.", vbExclamation
        Exit Sub
    End If
    
    If Not IsNumeric(userInput) Then
        MsgBox "ورودی معتبر نیست. لطفاً یک عدد وارد کنید.", vbExclamation
        Exit Sub
    End If
    
    ' تبدیل رشته به عدد
    num = CDbl(userInput)
    
    ' در گام بعد محاسبه توان دوم انجام می‌شود
End Sub

گام ۴: انجام محاسبه و نمایش نتیجه

محاسبه توان دوم

وقتی ورودی درست دریافت شد، توان دوم آن را محاسبه می‌کنیم. این همان بخش پردازش داده است. در این گام متغیر result را برای ذخیره مقدار توان دوم ورودی کاربر و از نوع Double تعریف می‌نماییم.

Dim result As Double     ' متغیر برای نگهداری توان دوم عدد

توان دوم یک عدد یعنی ضرب عدد در خودش. در VBA می‌توان از دو روش برای محاسبه توان دوم استفاده کرد:

  1. ضرب ساده:
result = num * num
  1. تابع داخلی ^ (توان):
result = num ^ 2

هر دو روش یک نتیجه می‌دهند. در این مثال، برای ساده‌بودن، روش ضرب ساده را انتخاب می‌کنیم.

نمایش نتیجه

برای نمایش نتیجه به کاربر، از تابع MsgBox استفاده می‌نماییم.

MsgBox "توان دوم عدد " & num & " برابر است با " & result

این خط پیام را به صورت واضح نشان می‌دهد و کاربر متوجه نتیجه می‌شود.

کد نهایی برنامه:
Sub SquareNumber()
    Dim userInput As String  ' ابتدا ورودی به صورت رشته دریافت می‌شود
    Dim num As Double        ' متغیر برای نگهداری عدد پس از اعتبارسنجی
    Dim result As Double     ' متغیر برای نگهداری توان دوم عدد
    
    ' گرفتن ورودی از کاربر
    userInput = InputBox("لطفاً عدد مورد نظر خود را وارد کنید:")
    
    ' اعتبارسنجی ورودی
    If userInput = "" Then
        MsgBox "ورودی خالی است یا کاربر Cancel زده است.", vbExclamation
        Exit Sub
    End If
    
    If Not IsNumeric(userInput) Then
        MsgBox "ورودی معتبر نیست. لطفاً یک عدد وارد کنید.", vbExclamation
        Exit Sub
    End If
    
    ' تبدیل رشته به عدد
    num = CDbl(userInput)
    
    ' محاسبه توان دوم
    result = num * num
    
    ' نمایش نتیجه به کاربر
    MsgBox "توان دوم عدد " & num & " برابر است با " & result
End Sub

گام ۶: آزمایش برنامه

کد نهایی برنامه ما در مرحله قبل آماده گردید. حالا برای آزمایش برنامه می‌توانیم از پنجره Immediate یا منوی Run ویرایشگر VBE استفاده نماییم. در این آموزش ما کد برنامه را بصورت یک ماکروی اکسل ذخیره می‌کنیم و آن را اجرا می‌نماییم.

برای مطالعه بیشتر در مورد پنجره Immediate و نحوه فراخوانی روال‌ها از طریق این پنجره می‌توانید این صفحه را مشاهده نمایید.

آماده‌سازی برنامه جهت اجرا

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

انتخاب برنامه میزبان

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

قبل از ادامه به ایجاد ماژول برای ذخیره کدهای اولین برنامه VBA نحوه اجرای ماکرو در اکسل را حتماً از طریق این لینک مطالعه نمایید.

ایجاد ماژول برای ذخیره کدها

حال باید برای ذخیره کدهای خود یک ماژول را انتخاب نماییم. ما در اولین برنامه VBA شیء اکسل ThisWorkbook را انتخاب نموده‌ایم.

با دوبار کلیک روی شیء ThisWorkbook پنجره کدنویسی برای این شیء مطابق شکل زیر فعال خواهد گردید. کد برنامه را در پنجره کد این ماژول کپی نمایید.

نمای نوار عنوان VBE وقتی که شیء ThisWorkbook در حالت انتخاب قرار دارد
نوار عنوان VBE وقتی که شیء ThisWorkbook در حالت انتخاب قرار دارد نام شیء انتخاب شده را نمایش می‌دهد.

اجرای برنامه بصورت یک ماکروی اکسل

برای اجرای ماکرو، ویرایشگر VBE را ببندید و مطابق شکل زیر از سربرگ توسعه‌دهنده (Developer) روی گزینه Macros کلیک نمایید.

کلید Macros در سربرگ Developer نرم‌افزار اکسل
کلید Macros در سربرگ Developer را انتخاب نمایید.

در پنجره Macro، ماکروی ThisWorkbook.SquareNumber را انتخاب و روی کلید Run کلیک نمایید تا برنامه اجرا شود.

تصویر پنجره Macro در اکسل با ماکروی ThisWorkbook.SquareNumber
اجرای ماکروی SquareNumber از طریق پنجره Macro در اکسل.

تبریک! 🎉 شما نخستین برنامه VBA خود را اجرا کردید. عددی وارد کنید تا توان دوم آن در پنجره پیغام نمایش داده شود.

پنجره پیام Input Box با متن "Please enter a number" در اکسل
پنجره Input Box که برای دریافت ورودی عددی از کاربر در یک ماکروی VBA نمایش داده شده است.
پنجره پیام Message Box با متن "The square of 2145 is 4601025"
نمایش نتیجه محاسبه توان دوم عدد 2145 در یک Message Box ساده، پس از اجرای ماکروی VBA.

🔍 نکات رفع اشکال و خطاهای احتمالی

  • اگر ماکرو اجرا نمی‌شود: مطمئن شوید که تنظیمات امنیتی ماکروها در اکسل را روی “Enable all macros” قرار داده‌اید. (این تنظیمات در مسیر File > Options > Trust Center > Trust Center Settings > Macro Settings قابل دسترسی است)

🧩 تمرین برای شما

  • برنامه را طوری تغییر دهید که به جای توان دوم، توان سوم عدد ورودی را محاسبه کند.
  • از کاربر بخواهید نام خود را نیز وارد کند و در پیام خروجی، جمله‌ای مانند “سلام [نام کاربر]، نتیجه محاسبه [عدد] است” نمایش داده شود.

جمع‌بندی:

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

اگر آماده‌اید تا مهارت‌های VBA و ماکرونویسی خود را گسترش دهید و کارهای پیچیده‌تری را در اکسل خودکار کنید، حتماً در آموزش‌های بعدی همراه ما باشید!

سؤالات متداول درباره برنامه توان دوم در VBA

هدف از نوشتن این برنامه در VBA چیست؟

هدف از این برنامه آشنایی با مفاهیم پایه‌ای برنامه‌نویسی در VBA است، از جمله تعریف روال Sub، دریافت ورودی از کاربر با InputBox، اعتبارسنجی داده و نمایش خروجی با MsgBox. این تمرین به شما کمک می‌کند منطق ورودی–پردازش–خروجی را در عمل درک کنید.

چرا برای این برنامه از Sub استفاده شده است نه Function؟

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

اگر کاربر دکمه Cancel را بزند چه اتفاقی می‌افتد؟

در صورت فشردن دکمه Cancel، تابع InputBox مقدار رشته خالی "" برمی‌گرداند. در کد برنامه این وضعیت بررسی شده است و با نمایش پیام هشدار، اجرای برنامه متوقف می‌شود تا از بروز خطا جلوگیری شود.

چگونه می‌توان نتیجه را در سلول اکسل نمایش داد؟

به‌جای استفاده از MsgBox می‌توانید مقدار محاسبه‌شده را در سلولی از اکسل بنویسید. برای مثال:

Range("A1").Value = result
این دستور مقدار توان دوم را در سلول A1 قرار می‌دهد.

آیا می‌توان برنامه را برای توان‌های دیگر نیز توسعه داد؟

بله، کافی است یک متغیر جدید برای توان تعریف کنید و آن را از کاربر بگیرید. سپس به جای num * num از num ^ power استفاده نمایید تا عدد به توان دلخواه محاسبه شود.

دیدگاهتان را بنویسید