PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [حل شده] اجرای ماکرو از طریق ورود اطلاعات در سلول



maziardm
2018/02/28, 16:57
با سلام و روز خوش
در فایل پیوستی یک ماکرو ایجاد کردم که طی آن ستون b رو بر اساس مقدار وروری در سلول b 1 عملیات فیلتر رو انجام میده. این کار رو هم درست انجام میده.
اما مشکل اینجاست که ورود مقدار در سلول b1 برای run کردن ماکرو سه راه رو بلدم انجام بدم: 1- انتخاب گزینه ران در آیتم ماکرو. 2- ایجاد شیپ و اتصال آن به ماکرو. 3- ایجاد میانبر توسط کلید های ترکیبی (برای مثال Ctrl+q)
ولی یه راه دیگه هم میدونم وجود داره. به این راه به محض ورود اطلاعات در سلول بی 1 و زدن دکمه اینتر ماکرو خود به خود عمل می کنه. و عمل فیلتر انجام میشه. این کار رو تو برخی فایل ها دیدم ولی نتونستنم سر در بیارم.
ممنون میشم راهنمایی کنید که چطوری این کار انجام میشه.
با تشکر

misammisam
2018/02/28, 18:52
با سلام و روز خوش
در فایل پیوستی یک ماکرو ایجاد کردم که طی آن ستون b رو بر اساس مقدار وروری در سلول b 1 عملیات فیلتر رو انجام میده. این کار رو هم درست انجام میده.
اما مشکل اینجاست که ورود مقدار در سلول b1 برای run کردن ماکرو سه راه رو بلدم انجام بدم: 1- انتخاب گزینه ران در آیتم ماکرو. 2- ایجاد شیپ و اتصال آن به ماکرو. 3- ایجاد میانبر توسط کلید های ترکیبی (برای مثال Ctrl+q)
ولی یه راه دیگه هم میدونم وجود داره. به این راه به محض ورود اطلاعات در سلول بی 1 و زدن دکمه اینتر ماکرو خود به خود عمل می کنه. و عمل فیلتر انجام میشه. این کار رو تو برخی فایل ها دیدم ولی نتونستنم سر در بیارم.
ممنون میشم راهنمایی کنید که چطوری این کار انجام میشه.
با تشکر

سلام

Private Sub Worksheet_Change(ByVal Target As Range)
If (ActiveCell.Address = "$B$2" Or ActiveCell.Address = "$C$1" Or ActiveCell.Address = "$A$1") Then
ActiveSheet.Range("$A$2:$g$15").AutoFilter Field:=2, Criteria1:=Range("b1"), Operator:=xlAnd
End If
End Sub

maziardm
2018/02/28, 19:07
با سلام مجدد و تشکر آقا میثم
واقعا لطف کردید. فقط میشه توضیح مختصری بدید چه کار کردید. و چه موارد الزامی رو به ماکرو مورد نظر من اظافه کردید. من دستوری رو که شما نوشتید دیدم ولی واقعیتش نفهمیدم کدومش الزامی برای کار مورد نظر من هستش.
ساده تر بگم اگه خواستم ماکرو های دیگه ای رو بنویسم و بخوام با ورود مقدار در یه سلول ماکرو خود به خود اجرا بشه و نیاز به مواردی نظیر کلید میانبر برای اجرای ماکرو نداشته باشم چیکار کنم و جه مواردی رو به ماکرو مورد نظر اضافه کنم.
با تشکر دوباره

misammisam
2018/02/28, 19:18
با سلام مجدد و تشکر آقا میثم
واقعا لطف کردید. فقط میشه توضیح مختصری بدید چه کار کردید. و چه موارد الزامی رو به ماکرو مورد نظر من اظافه کردید. من دستوری رو که شما نوشتید دیدم ولی واقعیتش نفهمیدم کدومش الزامی برای کار مورد نظر من هستش.
ساده تر بگم اگه خواستم ماکرو های دیگه ای رو بنویسم و بخوام با ورود مقدار در یه سلول ماکرو خود به خود اجرا بشه و نیاز به مواردی نظیر کلید میانبر برای اجرای ماکرو نداشته باشم چیکار کنم و جه مواردی رو به ماکرو مورد نظر اضافه کنم.
با تشکر دوباره
خیلی سادست ، تو قسمت خود شیت مورد نظر هر چیزی که داخل کد زیر بنویسید بعد از Change شدن ( تغییر دادن ) هر سلول کدهای داخلش اجرا میشه :

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub


و با یه if هم گفتیم بعد از اینکه سلولولی رو تغییر دادیم کدوم سلول ، سلول فعالمون باشه ، یعنی یه محدوده تعریف کردیم که کدها فقط وقتی اگه نشانگر اکسل روی این سلولها بود اجرا بشه و نه همه سلولها ، چون تو قطعه کد بالا عملیات هر وقت سلولی Change بشه اجرا میشه .

If (ActiveCell.Address = "$B$2" Or ActiveCell.Address = "$C$1" Or ActiveCell.Address = "$A$1") Then

End If

اینم کدیه که خودتون نوشتید :

ActiveSheet.Range("$A$2:$g$15").AutoFilter Field:=2, Criteria1:=Range("b1"), Operator:=xlAnd

maziardm
2018/02/28, 19:32
با سلام و تشکر مجدد
ببخشید این یه تیکه رو خیلی خوب متوجه نشدم. میشه یکم بیشتر توضیح بدید. بازم معذرت. بزارید روی تنبلی من و بد فهمی من.




و با یه if هم گفتیم بعد از اینکه سلولولی رو تغییر دادیم کدوم سلول ، سلول فعالمون باشه ، یعنی یه محدوده تعریف کردیم که کدها فقط وقتی اگه نشانگر اکسل روی این سلولها بود اجرا بشه و نه همه سلولها ، چون تو قطعه کد بالا عملیات هر وقت سلولی Change بشه اجرا میشه .

If (ActiveCell.Address = "$B$2" Or ActiveCell.Address = "$C$1" Or ActiveCell.Address = "$A$1") Then

End If

[/PHP]

misammisam
2018/03/01, 17:26
با سلام و تشکر مجدد
ببخشید این یه تیکه رو خیلی خوب متوجه نشدم. میشه یکم بیشتر توضیح بدید. بازم معذرت. بزارید روی تنبلی من و بد فهمی من.

وقتی یه سلولو ویرایش میکنی و کلید اینتر رو میزنی بنا به تنظیمات اکسل نشانگر به یه سلول پایینتر یا چپ و راست انتقال پیدا میکنه ، ما با این if گفتیم اگر بعد از ویرایش سلول پایین یا سلول چپ یا راست ، سلول b1 سلول فعال بود ، فقط در این حالت کدهای داخل if رو اجرا کن .

Amir Ghasemiyan
2018/03/03, 09:44
دوست عزيز اگر جواب سوالتون رو گرفتين لطفا تاپيك رو حل شده كنيد