ایجاد رخداد Workbook | کنترل عملیات کاربر در کاربرگ با VBA

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

مدت زمان تخمینی مطالعه: 4 دقیقه

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

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

رخداد Workbook چیست؟

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

رخداد Workbook یک روال سابروتین (زیرروال) است و در شیء ThisWorkbook پروژه VBA اکسل نوشته می شود. زیرروال رخداد کاربرگ می تواند یک یا چند پارامتر داشته باشد. پارامترها بصورت خودکار توسط شیء Workbook تشخیص داده و به رخداد ارسال می شوند. مقادیر پارامترها در بدنه زیرروال رخداد در دسترس می باشند.

کد زیر روال رخداد NewSheet کاربرگ می باشد. این رخداد هر بار که یک صفحه (Sheet) جدید در کاربرگ ایجاد شود فعال می گردد. پارامتر Sh پس از فراخوان روال نماینده صفحه جدیدی است که ایجاد شده است. بعنوان مثال ماکروی زیر نام صفحه جدید را تعیین می نماید.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Sh.Name = "صفحه جدید"
End Sub

محل ذخیره رخدادهای Workbook

هر فایل اکسل یک کاربرگ دارد. شیء ThisWorkbook نماینده کاربرگ فایل اکسلی است که کد VBA پروژه در آن ذخیره شده است. رخدادهای Workbook در یک پروژه VBA اکسل در شیء ThisWorkbook ذخیره و ایجاد می شوند.

مراحل ایجاد رخداد Workbook

ویرایشگر VBE بصورت خودکار بدنه روال هر رخداد Workbook را ایجاد می نماید. برای اینکار کافیست مراحل زیر را انجام دهید:

  1. ویرایشگر کد ویژوال بیسیک را در اکسل باز نمایید. می توانید از کلیدهای ترکیبی Alt+F4 استفاده نمایید. (آموزش کامل باز نمودن ویرایشگر کد VBA در اکسل)
  2. از پنجره مرور پروژه روی شیء ThisWorkbook دو بار کلیک نمایید تا پنجره کد این شیء باز شود.
  3. مطابق تصویر زیر از کشوی سمت راست گزینه Workbook را انتخاب نمایید. توجه داشته باشید اولین باری که گزینه Workbook را انتخاب می کنید VBE بصورت خودکار روال مربوط به رخداد Open کاربرگ را ایجاد می کند. می توانید آن را پاک کنید یا بحال خود رها کنید.
درج رخداد Activate کاربرگ در VBA
  1. از کشوی سمت راست رخداد مدنظر خودتان را انتخاب نمایید تا VBE بصورت خودکار بدنه روال را ایجاد نماید.
ایجاد ماکروی رخداد Activate کاربرگ در VBA

حالا می توانید کد موردنظرتان را در بدنه روال ایجاد شده تایپ نمایید تا پس از فعال شدن رخداد اجرا شود. بعنوان مثال ماکروی رخداد Activate کاربرگ به شکل زیر می باشد.

Private Sub Workbook_Activate()
    ' کدی که می خواهید هنگام فراخوان رویداد اجرا شود در اینجا نوشته می شود.
End Sub

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

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

مراحل ایجاد رخداد Activate کاربرگ

  1. اکسل را باز کنید و یک کاربرگ جدید ایجاد نمایید.
  2. از سربرگ Developer روی گزینه Visual Basic کلیک نمایید تا ویرایشگر کد VBA باز گردد. (چگونه سربرگ Developer را در اکسل فعال نمایم)
  3. روی شیء ThisWorkbook در پنجره مرور پروژه ویرایشگر کد VBE دو بار کلیک نمایید تا پنجره کد مربوط به آن باز گردد.
  4. مطابق تصویر زیر از کشوی سمت راست گزینه Workbook را انتخاب نمایید.
درج رخداد Activate کاربرگ در VBA
  1. حالا از کشوی سمت چپ گزینه Activate را انتخاب نمایید.
ایجاد ماکروی رخداد Activate کاربرگ در VBA
  1. حالا می توانید ماکروی موردنظر خودتان را در بدنه روال درج نمایید. در مثال فعلی می خواهیم ماکروی ما هنگام فعال شدن کاربرگ اطلاعات ستون A را بصورت خودکار از بالا به پایین مرتب نماید. کد زیر را در بدنه روال رخداد Activate کپی نمایید.
Private Sub Workbook_Activate()
    Columns(1).Sort Key1:=Range("a1"), Order1:=xlAscending, Header:=xlYes
    MsgBox "کاربرگ فعال شده است"
End Sub
  1. برای امتحان کد، در ستون A اطلاعات دلخواه تان را اضافه نمایید. حالا یک کاربرگ جدید باز نمایید و بین پنجره کاربرگ ها جابجا شوید تا نتیجه عملیات را مشاهده نمایید.

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