سوپریو پرسید که آیا کنترل کننده رویداد ماوس در VBA وجود دارد؟ او می خواهد وقتی روی آن سلول کلیک می شود، مقداری در سلول وارد شود.
راه استاندارد برای انجام این کار با رویداد SelectionChange است. هر بار که انتخاب در کاربرگ تغییر می کند، رویداد فعال می شود. این رویداد فقط با کلیک روی یک سلول فعال نمی شود، بلکه اگر فردی یک کلید کنترل مکان نما را فشار دهد که منجر به انتخاب سلول دیگری می شود.
به عنوان مثال، اجازه دهید بگوییم که شما می خواستید سلول B5 هر زمان که آن سلول انتخاب شد حاوی مقدار 10 باشد. برای پیاده سازی آن، می توانید از موارد زیر استفاده کنید:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B5")) Is Nothing Then _
Range("B5").Value = 10
End Sub
این کد به یکی از شیت های صفحه در ناحیه Project Explorer ویرایشگر VB اضافه می شود. روی برگه ای که می خواهید مدیریت رویداد روی آن اعمال شود، دوبار کلیک کنید و سپس ماکرو را به پنجره کد حاصل اضافه کنید.
هنگامی که رویداد SelectionChange فعال می شود، هدف (محدوده سلولی که انتخاب می شود) به کنترل کننده ارسال می شود. سپس ماکرو بررسی می کند که آیا محدوده هدف شامل سلول B5 است یا خیر، و در صورت وجود، مقدار 10 را در سلول B5 قرار می دهد. اگر می خواهید مطمئن شوید که ماکرو فقط اطلاعات را در B5 قرار می دهد که فقط B5 (تک سلول) انتخاب شده باشد، می توانید از این نسخه ماکرو استفاده کنید:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("B5").Address Then _
Range("B5").Value = 10
End Sub