نحوه ماکرونویسی و استفاده از ماکروهای VBA در اکسل

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

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

این مقاله نشانگر ورود شما به دنیای جذاب ماکروهای اکسل است. این مطلب شامل تمام مقدماتی است که باید برای شروع ماکرونویسی در اکسل بدانید.

ماکرو (Macro) در اکسل چیست؟

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

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

اغلب اوقات، ممکن است افرادی را بشنوید که از “ماکرو” به عنوان “VBA” یاد می‌کنند. از نظر فنی، این تمایز وجود دارد: ماکرو یک قطعه کد است در حالی که ویژوال بیسیک برای برنامه‌های کاربردی/Visual Basic for Applications (VBA) زبان برنامه‌نویسی است که توسط مایکروسافت برای نوشتن ماکرو ایجاد شده‌است.

چرا از ماکروهای اکسل استفاده کنیم؟

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

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

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

نحوه‌ی ماکرونویسی در اکسل

دو روش برای ایجاد ماکرو در اکسل وجود دارد – با استفاده از Macro Recorder و Visual Basic Editor.
نکته: در اکسل ، بیشتر عملیات با ماکرو از طریق تب Developer انجام می‌شود، بنابراین حتماً به روبین اکسل خود تب Developer را اضافه کنید.

ضبط یک ماکرو

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

ضبط کننده‌ی ماکرو تقریباً همه کارهایی را که انجام می‌دهید ثبت می‌کند و کدی بسیار با جزئیات (اغلب زائد) را تولید می‌کند. بعد از این‌که ضبط را متوقف کردید و ماکرو را ذخیره کردید، می‌توانید کد آن را در ویرایشگر ویژوال بیسیک مشاهده کنید و تغییرات کوچکی انجام دهید. وقتی ماکرو را اجرا می‌کنید، اکسل به کد VBA ضبط شده بازمی‌گردد و دقیقاً همان حرکات را انجام می‌دهد.

برای شروع ضبط، بر روی دکمه‌ی Record Macro در نوار وضعیت یا تب Developer کلیک کنید.

ماکرونویسی در اکسل از طریق ضبط ماکرو

ماکرونویسی در ویرایشگر ویژوال بیسیک

ویرایشگر ویژوال بیسیک برای برنامه‌های کاربردی (VBA) محلی است که مایکروسافت اکسل کد کلیه‌ی ماکروها، چه به صورت دستی ضبط‌شده و چه به صورت دستی نوشته‌شده را در آن نگه می‌دارد.

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

ابتدا، Alt + F11 را فشار دهید تا ویرایشگر ویژوال بیسیک را باز کنید؛ و سپس، کد را طی این دو مرحله سریع وارد کنید:

  1. در Project Explorer در سمت چپ، روی ورک‌بوک هدف راست کلیک کرده و حال بر روی Insert > سپس Module کلیک کنید.
  2. در پنجره‌ی Code در سمت راست، کد VBA را وارد کنید.

پس از اتمام، F5 را فشار دهید تا ماکرو اجرا شود.
ماکرونویسی در اکسل از طریق ویرایشگر ویژوال بیسیک

نحوه‌ی اجرای ماکروها در اکسل

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

  • برای اجرای ماکرو از ورک‌شیت، روی دکمه‌ی Macros در تب Developer کلیک کنید یا میانبر Alt+Shift+F8 را فشار دهید.
  • برای اجرای یک ماکرو از ویرایشگر VBA، یکی از این دو روش:
    • F5 برای اجرای کل کد.
    • F8 برای اجرای کد به صورت خط به خط. این برای آزمایش و عیب‌یابی بسیار مفید است.

علاوه بر این، می‌توانید با کلیک کردن روی یک دکمه دلخواه یا فشار دادن میانبر اختصاص داده‌شده، یک ماکرو را راه‌اندازی کنید.

نحوه‌ی فعال کردن ماکروها در اکسل

به دلایل امنیتی، همه‌ی ماکروها در اکسل به طور پیش فرض غیرفعال هستند؛ بنابراین، برای استفاده از جادوی کدهای VBA به نفع خود، باید بدانید که چگونه آنها را فعال کنید.

ساده‌ترین راه برای روشن کردن ماکرو برای یک ورک‌بوک خاص، کلیک بر روی دکمه‌ی Enable Content در نوار هشدار امنیتی زرد رنگ است که در بالای شیت هنگام باز کردن یک ورک‌بوک داری ماکرو برای اولین بار، در بالای صفحه ظاهر می‌شود.
فعال کردن ماکروها برای یک ورک‌بوک خاص

نحوه‌‌ی تغییر تنظیمات ماکرو

مایکروسافت اکسل تعیین می‌کند که اجازه دهید یا ندهید کدهای VBA در ورک‌بوک‌های شما بر اساس تنظیمات ماکرو که در Trust Center انتخاب شده، اجرا شود.

در این‌جا مراحل دسترسی به تنظیمات ماکروی اکسل و تغییر آن‎ها در صورت لزوم آمده است:

  1. به تب File بروید و Options را انتخاب کنید.
  2. در قسمت سمت چپ، Trust Center را انتخاب کنید، و سپس Trust Center Settings… را کلیک کنید.
  3. در کادر محاوره‌ای Trust Center، در سمت چپ روی Macro Settings کلیک کنید، گزینه‌ی مورد نظر را انتخاب کرده و OK را بزنید.

در تصویر زیر، تنظیمات پیش فرض ماکرو انتخاب شده‌است:
تنظیمات ماکروی اکسل

نحوه‌ی مشاهده، ویرایش و اشکال‌زدایی کدهای VBA در اکسل

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

برای باز کردن ویرایشگر VB، میانبر Alt+F11 را فشار دهید یا بر روی دکمه‌ی Visual Basic در تب Developer کلیک کنید.
ویرایشگر VBA را باز کنید.
باز کردن ویرایشگر VBA.

برای مشاهده و ویرایش کد یک ماکروی خاص، در Project Explorer در سمت چپ، روی ماژول (module) موجود در آن دوبار کلیک کنید یا ماژول را کلیک راست کرده و View Code را انتخاب کنید. این کار پنجره‌ی Code را باز می‌کند که می‌توانید کد را ویرایش کنید.

برای تست و اشکال‌زدایی یک ماکرو، از کلید F8 استفاده کنید. این کار شما را به کد خط به خط ماکرو می‌برد تا به شما اجازه دهد تاثیری را که هر خط روی ورک‌شیت شما دارد مشاهده کنید. خط در حال اجرا به رنگ زرد هایلایت است. برای خروج از حالت اشکال‌زدایی، روی دکمه Reset در نوار ابزار (مربع آبی) کلیک کنید.
تست و اشکال زدایی یک ماکرو

نحوه‌ی کپی کردن ماکرو در ورک‌بوکی دیگر

شما در یک ورک‌بوک یک ماکرو ایجاد کرده‌اید و اکنون می‌خواهید از آن در پرونده‌های دیگر نیز استفاده مجدد کنید؟ دو روش برای کپی کردن ماکرو در اکسل وجود دارد:

کپی کردن ماژول حاوی ماکرو

در صورتی که ماکروی هدف در ماژول‌های جداگانه باشد یا کلیه‌ی ماکروهای موجود در ماژول برای شما مفید باشند، پس کپی کردن کل ماژول از یک ورک‌بوک به دیگری کاری معقول است:

  1. هر دو ورک‌بوک را باز کنید – یکی که دارای ماکرو است و یکی از مواردی که به آن کپی کنید.
  2. ویرایشگر ویژوال بیسیک را باز کنید.
  3. در قسمت Project Explorer، ماژول حاوی ماکرو را پیدا کنید و آن را به سمت ورک‌بوک مقصد بکشید.

در تصویر زیر، ما در حال کپی کردن ماژول 1 از Book1 به Book2 هستیم:
کپی کردن یک ماکرو به یک ورک‌بوک دیگر

کپی کردن کد منبع ماکرو

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

  1. هر دو ورک‌بوک را باز کنید.
  2. ویرایشگر ویژوال بیسیک را باز کنید.
  3. در قسمت Project Explorer، روی ماژول حاوی ماکرو که می‌خواهید کپی کنید، دابل‌کلیک کنید تا پنجره‌ی Code آن باز شود.
  4. در پنجره‌ی Code، ماکرو مورد نظر را پیدا کنید، کد آن را انتخاب کنید (با Sub شروع کنید و با End Sub پایان دهید) و Ctrl+Cرا فشار دهید تا آن را کپی کنید.
  5. در Project Explorer، ورک‌بوک مقصد را پیدا کنید، و سپس یک ماژول جدید را در آن ایجائ کنید (بر روی ورک‌بوک راست کلیک کنید و بر روی Insert> Module کلیک کنید) یا روی یک ماژول موجود دوبار کلیک کنید تا پنجره‌ی Code آن باز شود.
  6. در پنجره‌ی Code ماژول مقصد، Ctrl+V را فشار دهید تا کد را پیست کنید. اگر ماژول از قبل حاوی مقداری کد است، به آخرین خط کد بروید و سپس ماکروی کپی‌شده را پیست کنید.
    کپی کردن کد منبع ماکرو

نحوه‌ی حذف ماکروها در اکسل

اگر دیگر نیازی به کد VBA خاصی ندارید، می‌توانید با استفاده از کادر محاوره‌ای Macro یا ویرایشگر ویژوال بیسیک آن را حذف کنید.

حذف یک ماکرو از ورک‌بوک

برای حذف یک ماکرو مستقیماً از ورک‌بوک اکسل خود، این مراحل را انجام دهید:

  1. در تب Developer، در گروه Code، بر روی دکمه Macros کلیک کرده یا میانبر Alt+F8 را فشار دهید.
  2. در کادر محاوره‌ای Macro ، ماکروی مورد نظر خود را انتخاب کرده و Delete را کلیک کنید..

حذف یک ماکرو در اکسل

نکات:

  • برای مشاهده‌ی همه ماکروها در کلیه فایل‌های باز، All Open Workbooks را از لیست کشویی Macros انتخاب کنید.
  • برای این‌که بتوانید یک ماکرو را در ورک‌بوک ماکروی شخصی (Personal Macro Workbook) حذف کنید، ابتدا باید Personal.xlsb را غیر مخفی کنید.

حذف یک ماکرو از طریق ویرایشگر ویژوال بیسیک

فایده‌ی استفاده از ویرایشگر VBA این است که این امکان را برای شما فراهم می‌کند که تمام ماژول‌ها را با تمام ماکروهایی که در یک جا وجود دارد حذف کنید. هم‌چنین، ویرایشگر VBA اجازه می‌دهد تا ماکروها را در ورک‌بوک ماکروی شخصی (Personal Macro Workbook) حذف کنید بدون این‌که آن را غیر مخفی کنید.

برای حذف یک ماژول به صورت دائمی، این مراحل را انجام دهید:

  1. در Project Explorer، روی ماژول راست کلیک کرده و گزینه‌ی Remove را از فهرست محتوا انتخاب کنید.
  2. وقتی از شما سؤال شد که آیا می‌خواهید قبل از حذف ماژول را اکسپورت کنید، بر روی No کلیک کنید.

حذف یک ماژول ماکرو از طریق ویرایشگر ویژوال بیسیک

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

  1. از منوی Tools، گزینه‌ی Macros را انتخاب کنید. کادر محاوره‌ای Macros ظاهر می‌شود.
  2. در لیست کشویی Macros In، پروژه‌ی حاوی ماکرو ناخواسته را انتخاب کنید.
  3. در کادر Macro Name، ماکرو را انتخاب کنید.
  4. روی دکمه‌ی Delete کلیک کنید.
    حذف یک ماکروی خاص

نحوه‌ی ذخیره‌ی ماکرو در اکسل

برای ذخیره‌ی یک ماکرو در اکسل، چه به صورت دستی ضبط‌شده چه نوشته‌شده، فقط کافی است که ورک‌بوک را به صورت macro enabled (*.xlms) ذخیره کنید. در این‌جا روش آن آمده است:

  1. در فایل حاوی ماکرو، روی دکمه ذخیره کلیک کرده یا Ctrl+S را فشار دهید.
  2. کادر محاوره‌ای Save As ظاهر می‌شود. از لیست کشویی گزینه‌ی Excel Macro Enabled Workbook (*.xlsm) را انتخاب کرده و روی Save کلیک کنید:

ذخیره‌ی ماکرو در اکسل

نحوه‌ی اکسپورت و ایمپورت کردن ماکرو در اکسل

اگر می‌خواهید کدهای VBA خود را با شخصی به اشتراک بگذارید یا آن‌ها را به کامیپوتر دیگری منتقل کنید، سریع‌ترین راه اکسپورت کل ماژول به صورت یک فایل .bas است.

اکسپورت کردن ماکرو

برای اکسپورت کردن کدهای VBA، این کاری است که شما باید انجام دهید:

  1. ورک‌بوک حاوی ماکروها را باز کنید.
  2. برای باز کردن ویرایشگر ویژوال بیسیک، Alt+F11 را فشار دهید.
  3. در Project Explorer، روی ماژول حاوی ماکرو کلیک راست کرده و Export File را انتخاب کنید.
  4. به فولدری بروید که می‌خواهید فایل اکسپورت‌شده را ذخیره کنید، نام فایل را نوشته و روی Save کنید.

Exporting macros to a .bas file

ایمپورت کردن ماکرو

برای ایمپورت کردن فایل .bas با کدهای VBA در اکسل خودتان، لطفاً این مراحل را دنبال کنید:

  1. ورک‌بوکی را که می خواهید ماکروی آن را ایمپورت کنید، باز کنید.
  2. ویرایشگر ویژوال بیسیک را باز کنید.
  3. در Project Explorer ، بر روی نام پروژه راست کلیک کرده و Import File را انتخاب کنید.
  4. به فایل .bas بروید و روی Open کلیک کنید.

ایمپورت کردن ماکرو به اکسل

مثال‌های ماکروی اکسل

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

غیر مخفی کردن تمام شیت‌ها در یک ورک‌بوک

در این مثال، ما از شیء ActiveWorkbook استفاده می‌کنیم تا ورک‌بوک در حال حاضر فعال را برگردانیم و حلقه‌ی For Each تا تمام شیت‌های موجود در یک ورک‌بوک را یک به یک طی کنیم. برای هر شیت یافت‌شده، پراپرتی Visible را روی xlSheetVisible قرار می‌دهیم.

Sub Unhide_All_Sheets()

Dim wks As Worksheet

For Each wks In ActiveWorkbook.Worksheets

wks.Visible = xlSheetVisible

Next wks

End Sub

مخفی کردن ورک‌شیت یا تبدیل آن به خیلی مخفی

برای دستکاری در شیت فعال فعلی، از شیء ActiveSheet استفاده کنید. این نمونه ماکرو پراپرتی Visible شیت فعال را برای پنهان کردن آن به xlSheetHidden تغییر می‌دهد. برای پنهان کردن به صورت خیلی مخفی ، ویژگی Visible را روی xlSheetVeryHidden تنظیم کنید.

Sub Hide_Active_Sheet()

ActiveSheet.Visible = xlSheetHidden

End Sub

ادغام‌زدایی همه‌ی سلول‌های ادغام‌شده را در بازه‌ی انتخاب‌شده

اگر می‌خواهید به جای کل ورک‌شیت، عملیات خاصی را بر روی یک بازه انجام دهید، از شیء Selection استفاده کنید. به عنوان مثال، کد زیر تمام سلول‌های ادغام‌شده در یک بازه‌ی انتخاب‌شده را ادغام‌زدایی می‌کند.

Sub Unmerge_Cells()

Selection.Cells.UnMerge

End Sub

نشان دادن یک جعبه پیام (message box)

برای نمایش پیامی به کاربران خود، از تابع MsgBox استفاده کنید. در این‌جا نمونه ای از چنین ماکرویی در ساده‌ترین شکل آن آورده شده‌است:

Sub Show_Message()

MsgBox (“Hello World!”)

End Sub

در ماکروهای واقعی، یک جعبه پیام معمولاً به منظور اطلاعات یا تأیید استفاده می‌شود. به عنوان مثال، قبل از انجام یک عمل (ادغام‌زدایی سلول‌ها در مثال ما)، یک جعبه پیام Yes/No را نشان می‌دهید. اگر کاربر روی “Yes” کلیک کند، سلولهای انتخاب‌شده ادغام‌زدایی می‌شوند.

Sub Unmerge_Selected_Cells()

Dim Answer As String

Answer = MsgBox(“Are you sure you want to unmerge these cells?”, vbQuestion + vbYesNo, “Unmerge Cells”)

If Answer = vbYes Then

Selection.Cells.UnMerge

End If

End Sub

برای تست کد، یک یا چند بازه‌ی حاوی سلول‌های ادغام‌شده را انتخاب کنید و ماکرو را اجرا کنید. پیام زیر ظاهر می‌شود:
A macro shows a message box.

نحوه‌ی محافظت از ماکروهای اکسل

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

قفل کردن ماکرو برای مشاهده

برای محافظت از کدهای VBA در برابر مشاهده و ویرایش غیر مجاز، موارد زیر را انجام دهید:

    1. ویرایشگر VBA را باز کنید.
    2. در Project Explorer، بر روی پروژه‌ای که می‌خواهید قفل کنید، راست کلیک کنید و VBAProject Properties… را انتخاب کنید
    3. در کادر محاوره‌ای Project Properties، در تب Protection، گزینه‌ی Lock project for viewing را تیک بزنید، رمز عبور را دو بار وارد کنید و بر روی OK کلیک کنید.
  1. پرونده‌ی اکسل خود را ذخیره، بسته و مجدداً باز کنید.

ماکرو را برای مشاهده قفل کنید

وقتی می‌خواهید کد را در ویرایشگر ویژوال بیسیک مشاهده کنید، کادر گفتگوی زیر ظاهر می‌شود. پسورد را تایپ کرده و OK را بزنید.
The macro is password-protected.

برای باز کردن ماکروها، کافی است دوباره کادر گفتگوی Project Properties را باز کرده و تیک جعبه‌ی Lock project for viewing را حذف کنید.
توجه: این روش از مشاهده‌ی کد و ویرایش کد محافظت می‌کند اما مانع از اجرای آن نمی‌شود.

محافظت ماکرو از اجرا با پسورد

برای محافظت از اجرای ماکروی خود به گونه‌ای که فقط کاربرانی که رمز عبور را می‌شناسند بتوانند آن را اجرا کنند، کد زیر را اضافه کنید، کلمه “password” را با رمز واقعی خود جایگزین کنید:

Sub Password_Protect()

Dim password As Variant

password = Application.InputBox(“Please enter Password”, “Password Protected Macro”)

Select Case password

Case Is = False

‘چیزی انجام نده

Case Is = “password”

‘کد شما این‌جا قرار می‌گیرد

Case Else

MsgBox “Incorrect Password”

End Select

End Sub

این ماکرو از تابع InputBox برای درخواست از کاربر برای ورود پسورد استفاده می‌کند:
برای اجرای ماکرو کلمه عبور لازم است..

اگر ورودی کاربر با پسورد کدگذاری‌شده مطابقت داشته باشد، کد شما اجرا می‌شود. اگر پسورد مطابقت نداشته باشد، جعبه پیام “Incorrect Password” نمایش داده می‌شود. برای جلوگیری از مشاهده‌ی password توسط کاربر در ویرایشگر ویژوال بیسیک، به یاد داشته باشید که همان‌طور که در بالا توضیح داده شد، ماکرو را قفل کنید.
توجه: با توجه به تعداد کرک‌های مختلف رمز عبور موجود در وب، درک این نکته ضروری است که این محافظت مطلق نیست. می‌توانید آن را بیشتر به عنوان محافظت در برابر استفاده‌ی تصادفی در نظر بگیرید.

نکات ماکروی اکسل

VBAکاران حرفه‌ای اکسل هزاران ترفند مبتکرانه را برای مؤثرتر کردن ماکروها طراحی کرده‌اند. در زیر چند مورد از این موارد را به اشتراک می‌گذاریم.

چگونه کار کردن ماکروها را سریع‌تر کنیم

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

خطوط زیر به ابتدای کد شما اضافه می‌شوند (بعد از خطوطی که با Dim یا بعد از خط Sub شروع می‌شوند):

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

خطوط زیر به انتهای کد شما اضافه می‌شود (قبل از پایان Sub):

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

نحوه‌ی شکستن کد VBA به چند خط

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

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

برای ادامه‌ی صحیح کد در خط بعدی، لطفاً این قوانین را دنبال کنید:

  • کد را در وسط نام آرگومان‌ها تقسیم نکنید.
  • برای شکستن کامنت‌ها از زیرخط استفاده نکنید. برای نظرات چند خطی، در ابتدای هر خط، یک آپستروف (‘) تایپ کنید.
  • زیرخط باید آخرین کاراکتر روی یک خط باشد و به دنبال آن چیز دیگری نباید باشد.

مثال کد زیر نحوه تجزیه‌ی عبارت را به دو خط نشان می‌دهد:

Answer = MsgBox(“Are you sure you want to unmerge these cells?”, _
vbQuestion + vbYesNo, “Unmerge Cells”)

چگونه می‌توان یک ماکرو را از هر ورک‌بوکی در دسترس قرار داد

هنگامی که ماکرو را در اکسل می‌نویسید یا ضبط می‌کنید، معمولاً فقط از آن ورک‌بوک خاص قابل دسترسی است. اگر مایل به استفاده‌ی مجدد از همان کد در ورک‌بوک‌های دیگر هستید، آن را در ورک‌بوک ماکروی شخصی (Personal Macro Workbook) ذخیره کنید. این کار باعث می‌شود هر زمان که اکسل را باز کنید، ماکرو در دسترس شما باشد.

تنها مانع این است که Personal Macro Workbook به طور پیش‌فرض در اکسل موجود نباشد. برای ایجاد آن، شما باید حداقل یک ماکرو را ضبط کنید.

متوقف کردن اکسل از نمایش هشدار امنیتی هنگامی که هیچ ماکرویی در ورک‌بوک وجود ندارد

آیا تاکنون در شرایطی قرار گرفته‌اید که اکسل پیوسته از شما سؤال می‌کند که آیا می‌خواهید ماکرو را فعال کنید در حالی که قطعاً می‌دانید که هیچ ماکرویی در این ورک‌بوک خاص وجود ندارد؟

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

  • برای ThisWorkbook و برای هر شیت جداگانه، پنجره‌ی Code را باز کنید، Ctrl + A را فشار دهید تا تمام کدها را انتخاب کرده و آن را حذف کنید (حتی اگر پنجره‌ی Code خالی به نظر برسد)..
  • همه‌ی UserFormها و ماژول‌های کلاس را که ورک‌بوک شامل آن است، حذف کنید.

این‌گونه است که ماکروهای VBA را در اکسل ایجاد و استفاده می‌کنید. از شما متشکرم که این مطلب را خواندید و امیدوارم که دوباره شما را در وب‌سایت‌مان ببینیم!

8 دیدگاه دربارهٔ «نحوه ماکرونویسی و استفاده از ماکروهای VBA در اکسل;

  1. با سلام و روز بخیر
    واقعا مطالب عالی و کاربردی هستند متشکرم
    ممنون میشم اگر دستورهای بابت توابع Sumifs/vlookup/ forecast یا توابع کاربردی دیگه هم ارسال کنید.
    باز هم متشکرم

    پاسخ
  2. واقعا عالی وکاربردی بودند موفق باشید زیرا که درموفقیت دیگران سهیم بودید

    پاسخ

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

Item added to cart.
0 items - تومان
ضبط پیام صوتی

زمان هر پیام صوتی 5 دقیقه است