اکسل پدیا، دانشنامه پارسی اکسل

021-47625755
[email protected]

ورود یا ثبت نام

  • دانشنامه اکسل
    • اکسل چیست؟
    • اکسل مقدماتی
    • توابع اکسل
    • نمودار ها
    • وی بی – ماکرو
  • آکادمی اکسل
    • ویدئوهای آموزشی
      • رسم نمودارهای حرفه ای
      • اکسل و شروع حرفه ای
      • اکسل نینجا (اکسل پیشرفته)
      • صفر تا صد Pivot Table
      • برنامه نویسی وی بی (VBA)
    • کتاب ها
      • کتاب های فارسی
      • کتاب های انگلیسی
  • داشبورد های مدیریتی
    • آموزش ساخت داشبورد
    • دانلود داشبورد نمونه
  • افزونه های کاربردی
  • دوره های حضوری
    • اکسل نینجا
    • برنامه نویسی وی بی (VBA)
  • درباره ما
    • Cart

      0

وی بی - ماکرو

  • خانه
  • بلاگ
  • وی بی - ماکرو
  • رویدادها در اکسل

رویدادها در اکسل

  • ارسال شده توسط سامان چراغی
  • دسته بندی وی بی - ماکرو
  • تاریخ ۱۰ فروردین ۱۳۹۷
  • نظرات ۶ دیدگاه ها
رویدادها در اکسل
5 / 5 ( 1 امتیاز )

رویدادها در اکسل به چه چیز گفته میشود؟

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

در اکسل مفهومی به نام رویداد وجود داره که به زمان اجرای برخی فعالیت ها گفته میشه. به عنوان مثال اگر کاربر یک شیت رو انتخاب کنه یک رویداد (که اسم خاص خودش رو داره) رخ داده. همچنین ورود اطلاعات در سلول یا ذخیره کردن فایل هم یک رویداد هستند که از نظر اکسل اگر رخ بده قابل تشخیص هست. اینکه این رویدادها در اکسل قابل تشخیص هستند یعنی اینکه میشه زمان اجرای کدهایی که نوشتیم رو به این رویدادها وابسته کرد.

به عنوان مثال اگر میخوایم در زمان انتخاب هر یک از شیت ها، کدی اجرا شود، این کار با نوشتن کدی که وابسته به رویداد “انتخاب شدن شیت ها” هست انجام میشه. همچنین اگر بخوایم ماکرویی که نوشته شده در زمان انتخاب Sheet1 اجرا بشه، باید این کد رو به رویداد Activate مربوط به Sheet1 وابسته کنیم.

اشیاء در اکسل (مثل شیت ها، نمودارها، فایل ها و یا حتی خود برنامه اکسل) دارای رویدادهای خاص خود هستند.

چگونه کدهای وی بی رو به رویدادها وابسته کنیم؟

سوالی که پیش میاد اینه که چطوری کدهایی که نوشته ایم رو به رویدادها وصل کنیم. بعد از ورود به ویرایشگر VBA (ترکیب دکمه های Alt+F11 یکی از اون راه ها هست) باید پنجره کد مربوط به اون شئ که میخوایم به رویدادهای اون وصل بشیم رو باز کنیم. به عنوان مثال اگر بخوایم کد ما در زمان انتخاب شدن Sheet1 اجرا بشه، باید از قسمت Projects Window پنجر کد Sheet1 رو باز کنیم. در شکل 1 صفحه کد مربوط به Sheet1 انتخاب شده

حتما بخوانید:  دستورات شرطی در VBA | ساختار Select

انتخاب پنجره کد برای اتصال کد به رویدادها در اکسل

شکل 1- انتخاب پنجره کد برای اتصال کد به رویدادها در اکسل

بعد از وارد شدن به پنجره کد شئ مورد نظر از لیست بالا سمت چپ (در شکل 1 قسمتی که کلمه General نوشته شده) شئ مورد نظری که با رویدادهای آن کار داریم رو انتخاب میکنیم (در اینجا گزینه Worksheet رو انتخاب میکنیم). بعد از انتخاب شئ مورد نظر در لیست سمت راست آن، رویدادهای قابل انتخاب نمایش داده میشه.

رویدادها در اکسل- انتخاب رویداد مورد نظر

شکل 2- رویدادها در اکسل-  انتخاب رویداد مورد نظر

بعد از انتخاب رویداد مورد نظر از لیست، در پنجره کد یک SUB ایجاد خواهد شد. در این ساب هر کدی که بنویسید در زمان رخداد رویداد مورد نظر اجرا میشه. توجه کنید نباید آرگومان ها و یا نام ساب رو تغییر بدید.

مثال: نمایش پیغام در زمان انتخاب سلول B1

برای انجام این کار باید از بین رویدادهای شیت، رویداد SelectionChange رو انتخاب کنید. این رویداد زمانی رخ میده که سلول دیگری به جز سلول فعال، انتخاب بشه. با انتخاب این رویداد، ساب Worksheet_SelectionChange به پنجره کد اضافه میشه. حالا کافیه کدهای وی بی رو که برای بررسی سلول انتخاب شده و نمایش پیغام در این ساب گذاشته بشه.

این ساب یک آرگومان به نام Target داره که نماینده سلول یا محدوده انتخاب شده هست. پس در واقع با بررسی خصوصیات این شئ (Target) میتونیم بفهمیم که چند سلول انتخاب شده و یا آدرس سلول انتخاب شده چیه. کد زیر برای بررسی شماره ردیف و ستون سلول انتخاب شده و اینکه فقط یک سلول انتخاب شده باشه نه چند تا سلول:

1
2
3
4
5
6
7
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' بررسی اینکه تنها یک سلول انتخاب شده و آن هم سلول مورد نظر باشه
    If Target.Count = 1 And Target.Row = 1 And Target.Column = 2 Then
        ' در صورتیکه سلول مورد نظر انتخاب شده باشه، پیغام نمایش داده بشه
        MsgBox "شما سلول مورد نظر ما رو انتخاب کردید"
    End If
End Sub
  • اشتراک گذاری:
profile avatar
سامان چراغی
من سامان چراغی هستم. دانش آموخته مقطع فوق لیسانس دانشگاه تربیت مدرس در رشته مهندسی صنایع. از سال 1388 اکسل و برنامه نویسی VBA رو به صورت حرفه ای شروع کردم.

مطلب قبلی

معرفی کتاب Excel 2013 The Missing Manual
۱۰ فروردین ۱۳۹۷

مطلب بعدی

رسم نمودار Treemap | قسمت دوم
۱۰ فروردین ۱۳۹۷

ممکن است همچنین دوست داشته باشید

For-VBA-Cover
ایجاد حلقه های تکرار در VBA اکسل با ساختار For
۲۱ فروردین, ۱۳۹۷
InputBox-Function-Cover
تابع Msgbox و تعامل با کاربر
۱۲ اسفند, ۱۳۹۶
Macro-Security-Cover
تنظیمات امنیتی ماکرو در اکسل
۲۵ بهمن, ۱۳۹۶

    6 نظر

  1. profile avatar
    حمیدرضا
    ۳۰ دی ۱۳۹۹
    پاسخ

    با سلام
    وقتی میخوام با دستور save as یک فایل رو بر روی فایل قبلی ذخیره کنم یک پیغام میاد که میخواید روی فایل قبلی ذخیره کنید…
    واسه اینکه بصورت خودکار ذخیره کنه باید چه کدی زد؟
    و اینکه کلا برای انتخاب خودکار از بین گزینه هایی که طی اجرای ماکرو ممکنه بصورت کادر محاوره ظاهر بشن، از چه کدی میشه استفاده کرد؟
    با سپاس

    • profile avatar
      سامان چراغی
      ۱ بهمن ۱۳۹۹
      پاسخ

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

      1
      Application.Displayalert = False

      دقت کنید که انتهای کدتون این گزینه رو True کنید.

  2. profile avatar
    مصطفی عبدی
    ۲۲ مرداد ۱۳۹۸
    پاسخ

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

    • profile avatar
      سامان چراغی
      ۲۲ مرداد ۱۳۹۸
      پاسخ

      سلام،
      بله اگر آدرس سلول یا آبجکت هایی که در سایر شیت ها هست رو همراه با نام شیت بیارید میتونید این کار رو انجام بدید.

  3. profile avatar
    بهار
    ۷ مرداد ۱۳۹۸
    پاسخ

    سلام.خسته نباشید
    من احتیاج دارم که طبق اولویت هایی که به به هر سطرم میدم اونها به طور خودکار از اولویت 1 تا 5 مرتب بشن
    مثلا یک داده جدید در آخرین سطرم(سطر 100) وارد کردم با اولویت 2 میخام که این سطر به طور خودکار به بالا منتقل بشه و زیر آخرین اولویت 2 که قبلا وارد کردم بشینه
    ممنون میشم راهنماییم کنین

    • profile avatar
      حسنا خاکزاد
      ۷ مرداد ۱۳۹۸
      پاسخ

      درود بر شما
      باید سورت کنید

      اگر به فرمول نویسی مسلط هستید باید از small/rage استفاده کنید و البته با توابع دیگه ترکیب کنید که کل سطر و جابجا کنه

      در غیر اینصورت میتونید سورت کنید و برای اتومات شدنش، ماکرو ضبط کنید

نظر بدهید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --

زودتر از دیگران با خبر بشید

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

آخرین مطالب

مقادیر متمایز در اکسل
تفاوت داده Distinct و Unique چیست؟ چطور میشه مشخص کرد
۱۰فروردین۱۴۰۰
استفاده از چندین تابع IF اکسل در هم
توابع IF تو در تو و نکات مهمی که باید بدانید
۲۷اسفند۱۳۹۹
تابع Trim
تابع Trim در اکسل
۲۱اسفند۱۳۹۹
کاربرد Power Query
چند مثال کاربردی از ابزار Power Query
۱۵اسفند۱۳۹۹

وجود یک منبع جامع و به روز که بدونی همیشه پشتیبانته برای یادگیری ضروریه. اکسل پدیا رو برای همین به وجود آوردیم.

پاسخ سوالات شما

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

کانال و تالار گفتمان اکسل پدیا

ورود به تالار گفتگو تلگرام

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

  • این فیلد برای اعتبار سنجی است و باید بدون تغییر باقی بماند .

021-47625755

[email protected]

آدرس: تهران، میدان دوم صادقیه، برج گلدیس، طبقه 7 واحد 721

دانلود اپ اکسل پدیادانلود از کافه بازار

تمامی حقوق برای اکسل پدیا محفوظ است.

  • اکسل از راه دور
  • شرایط و قوانین
  • درباره ما
  • تماس با ما