سبد خرید 0

وبلاگ

اجرای خودکار ماکرو در اکسل

اگر یادتون باشه ما در بحث UserForm یاد گرفتیم که چگونه یک یوزرفرم ایجاد و اجرا کنیم.در بحث مربوط به WorkBook هم با نحوه مخفی کردن فایل اکسل و نمایش یوزرفرم آشنا شدیم.و در پست مربوط به فرم لاگین با کاربردهای این دو آموزش آشنا شدیم.اکنون می خواهیم با تکیه بر آموزش های گفته شده نحوه اجرای خودکار ماکرو در اکسل را یاد بگیریم و ببینیم کجاها کاربرد دارد.

این بحث کاملا به آموزش های گفته شده در بالا وابسته است.پس اگر با مباحث بالا آشنا نیستید ابتدا حتما آنها را مطالعه کنید.

اجرای خودکار ماکرو در اکسل
کاری که قرار است انجام دهیم

هدف از آموزش اجرای خودکار ماکرو در اکسل:

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

ایجاد macro برای اجرای خودکار کدهای اکسل

برای اجرای خودکار ماکرو در اکسل ابتدا یک UserForm ایجاد کرده نام آنرا WelcomeForm قرار داده و داخل این فرم با استفاده از لیبل ها متن پیام خودتون رو یادداشت کنید. سپس به محیط VBA رفته و از قسمت Insert یک Module ایجاد کرده و بعد از باز کردن ماژول کد زیر را داخل آن کپی کنید مانند شکل شماره 1 .

Sub macro1()
WelcomeForm.Hide
Login_Form.Show
End Sub
نحوه-نمایش-فرم-لاگین-در-اکسل
شکل شماره 1 – کدنویسی اجرای فرم

در کد بالا macro1 نام ماکروی شماست که میتونید به دلخواه به هر نامی تغییر بدین.اکنون روی فرم WelcomeForm کلیک راست کرده و گزینه View Code رو بزنید تا صفحه کدنویسی باز بشه.حالا در رویداد Activate کد زیر رو قرار بدید مانند شکل شماره 2 .

Private Sub UserForm_Activate()
Application.OnTime Now + TimeValue("00:00:03"), "macro1"
End Sub
اجرای خودکار ماکرو در اکسل
شکل شماره 2 – تعیین رویداد یوزرفرم زمان اجرا

تشریح دستور اجرای اتوماتیک کد در اکسل

  • Application : اشاره به خود نرم افزار اکسل دارد.
  • OnTime : با این زیر کد می توان یک زمان معین برای یک رویداد را تعیین کرد.
  • Now : اشاره به زمان فعلی سیستم دارد.
  • TimeValue : با این کد می توان یک زمان را مستقیم تعریف کرد.
  • macro1 : نام ماکرویی هست که قبلا ایجاد کرده بودیم و ممکنه هر نامی به خودش بگیره.این قسمت باعث اجرای خودکار ماکرو میشه.

درواقع با کد بالا می گوییم که 3 ثانیه بعد از اینکه فرم WelcomeForm اجرا شد، کدهای داخل macro1 رو اجرا کن.حالا از اونجایی که داخل ماکرو1 کد Login_Form.Show رو نوشتیم پس یوزرفرم WelcomeForm بصور اتوماتیک اجرا و نمایش داده می شود.

اکنون از پنجره سمت چپ روی گزینه ThisWorkbook کلیک راست نموده و گزینه View Code رو بزنید تا صفحه کدنویسی باز بشه.حالا در رویداد Open کد زیر رو قرار بدید مانند شکل شماره 3 .

Private Sub Workbook_Open()
Application.Visible = False
WelcomeForm.Show
End Sub
کدنویسی مخفی کردن اکسل و نمایش یوزرفرم خوش آمدگویی
شکل شماره 3 – کدنویسی مخفی کردن اکسل و نمایش یوزرفرم خوش آمدگویی

از این به بعد وقتی شما فایلتون رو باز می کنید ابتدا فرم خوش آمدگویی (WelcomeForm) باز شده و بعد از مدت 3 ثانیه بصورت اتوماتیک بسته می شود و بعد یوزرفرم Login_Form نمایش داده می شود.اما مشکلی که اینجا وجود داره این هست که ممکنه کاربر خیلی سریع روی آیکون ضربدر فرم کلیک کنه و فرم رو زودتر از زمان 3 ثانیه ببنده که ما باید این مشکل رو حل کنیم.

برای اینکار روی WelcomeForm کلیک راست نموده و گزینه View Code رو بزنید تا صفحه کدنویسی باز بشه.حالا در رویداد QueryClose کد زیر رو قرار بدید مانند شکل شماره 4.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub
غیرغعال کردن دکمه ضربدر یوزرفرم
شکل شماره 4 – غیرغعال کردن دکمه ضربدر یوزرفرم

این کد باعث میشه تا دکمه ضربدر قرمز برای بستن فرم غیرفعال بشه.



منبع : https://docs.microsoft.com

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

8 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • سلام. وقتتون بخیر
    میخواستم بدونم چطور میشه یک شیت اکسل رو به عنوان شیت پیش فرض معرفی کرد که بعد از هر بار باز شدن، روی همون شیت باز بشیم؟!
    با تشکر

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

    • سلام. وقت بخیر.

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

      البته اینکار از طریق UserForm هم قابل انجام می باشد.

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