PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها



HEYDARDOOST_REZA
2011/11/03, 11:56
با سلام و تشكر از اين سايت خيلي با حالتون
من مشكلي بشرح ذيل داشتم كه ميخواستم ببينم كسي ميتونه منرو كمك كنه :
موضوع از اين قرار است كه اگر من يك ماكرو ايجاد كنم و بخواهم ماكرو را بدون استفاده از ميانبرها و command button ها و در حالي كه بمحض ورود اعداد به داخل cell و زدن enter ، ماكرو اجرا گردد ، چه كار بايد بكنم و آيا راه حلي وجود دارد ؟
يعني اگر ماكرويي را داشته باشم كه عدد ورودي را از سلول a1 دريافت كرده و بمحض زدن اينتر ماكرو run شده و نتيجه را در سلول b1 وارد كند.
خيلي فوري كمكم كنيد
با تشكر

m_d6712
2011/11/03, 15:38
سلام دوست عزیز!

بله امکان پذیر است.

وقتی داخل اکسل هستید Alt+F11 را فشار دهید. وارد محیط کد نویسی می شوید.
روی شیت مورد نظر کلیک کنید. محیط کد نویسی برای آن شیت باز می شود
دو لیست باز شونده خواهید دید. سمت راستی را به worksheet تغییر دهید و سمت چپی را به change

کد زیر ظاهر می شود.
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

هر دستوری در داخل این کد بنویسید زمان تغییر سلول این برنامه اجرا می شود. برای مثال

Private Sub Worksheet_Change(ByVal Target As Range)
Range("A2").Value = Target.Value

End Sub

~M*E*H*D*I~
2012/01/20, 19:47
با سلام

من قبلا ازین روش استفاده کردم و سوالایی برام مطرح شده ، نقش target تو استفاده از این روش چیه ؟ و آیا میشه مقدار داخل پرانتز رو تغییر داد ؟ و چرا وقتی این روش استفاده میشه قابلیت debug به روش step in to غیر فعال میشه؟

ممنون اگر دوستان پاسخ بدن

Javid Mokhtari
2012/01/20, 22:29
با سلام. آقای HEYDARDOOST_REZA ;
نمی دونم چرا می خواین از حالت Enter استفاده کنید ،اما من به شما توصیه می کنم که از رویداد Enter برای وارد کردن اطلاعات در شیت یا کارهای دیگه استفاده نکنید(بجز مواقع ضروری).برای اینکه با کوچکترین تغییری در آدرس یا محتویات سلول کد اجرا شده و بسیار اعصاب خورد هستش.

m_d6712
2012/01/22, 11:08
با سلام

من قبلا ازین روش استفاده کردم و سوالایی برام مطرح شده ، نقش target تو استفاده از این روش چیه ؟ و آیا میشه مقدار داخل پرانتز رو تغییر داد ؟ و چرا وقتی این روش استفاده میشه قابلیت debug به روش step in to غیر فعال میشه؟

ممنون اگر دوستان پاسخ بدن


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

target.value = ""
یا

target.offset(2,1).value = 12

قابلیت debug در این روش هم فعال است.

~M*E*H*D*I~
2012/01/22, 12:03
سلام
ممنون از پاسختون اگر اشتباه نکنم به این موارد event گفته میشه (اگر اشتباه میگم تصحیح کنید)مثلا با کلیک کردن میشه ماکرو رو اجرا کرد ، اگه امکان داره در مورد انواع event ها توضیح بدید یا اگه جزوه ای دارید به اشتراک بذارید ممنون

Javid Mokhtari
2012/01/22, 13:09
با سلام.
دوست عزیز هر شیئی که در اکسل وجود دارد event(رویداد) مخصوص به خود را دارد مثلاً شیئی workbook رویداد مخصوص خود و شیئی worksheetرویداد مخصوص به خود و... ،را دارد(البته در بعضی رویداد ها مشترکند) حال شما رویداد کدام شیئ را می خواهید؟ چون رویداد ها خیلی زیادند. با تشکر

~M*E*H*D*I~
2012/01/22, 16:19
سلام
ممنون از پاسختون منظور من بیشتر رویداد هایی هست که به وسیله او میشه مثلا در یک worksheet ماکرو رو اجرا کرد مثلا
name_change
name_click
name_keypress
و... من دنبال مرجعی هستم که این رویداد ها به صورت دسته بندی شده توضیح داده شده باشن

Javid Mokhtari
2012/01/22, 16:25
با سلام.
خودم هم دنبال همچین مرجعی بودم ولی پیدا نکردم.تصمیم گرفتم خودم یه مجموعه event هارو تهیه کنم.در اولین فرصت واستون می فرستم.

mohsenmrds
2016/09/11, 21:26
با عرض سلام خدمت همه اساتید عزیز
سوال من اینه که چطور میتونم یک رنج رو مشخص کنم به این صورت که اگر تو اون رنج تاریخ ( شمسی ترجیحا ) وارد بشه یک ماکرو اجرا بشه
باتشکر

iranweld
2016/09/12, 09:00
با استفاده از رویدادها محدوده مورد نظر برای ورود دیتا را تعریف نموده و سپس شرط ورود تاریخ شمسی را تعریف مینماید سپس در صورت برقراری شروط ماکروی مورد نظر اجرا گردد.


Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Range("A1:A100")) Is Nothing Then

On Error Resume Next

If Left(Target, 2) > 13 And InStr(Target, "/") = 5 And InStr(6, Target, "/") = 8 And Len(Target) = 10 Then

'If IsDate(Target) Then

TEST

End If

End If

End Sub

ماکرو مورد نظر


Sub TEST()

MsgBox "OK"

End Sub



12646

mohsenmrds
2016/09/12, 12:03
باسلام و تشکر از شما دوست عزیز
ممکنه این قسمتها رو برای من توضیح بدین چکار میکنه؟
1- Me.Range
2- If Left(Target, 2) > 13 And InStr(Target, "/") = 5 And InStr(6, Target, "/") = 8 And Len(Target) = 10
3- اعداد 2 و 13 و 5 و 6 و 8 و 10 معرف چی هستن؟
بازم ممنونم.

iranweld
2016/09/12, 12:57
مورد اول برای قابلیت رویدادها در اکسل رنجی را تعریف میکنیم که اگر در آن سلولها تغییری در دیتای آنها صورت گرفت آنگاه شرط دوم بررسی شود در شرط دوم چون فرمودید تاریخ شمسی اگر وارد شود بررسی میکنیم که دو رقم ابتدایی آن ۱۳ باشد که فعلا تاریخ شمسی با ان شروع میشود سپس چون سال چهار رقمی است پس از آن علامت / بایستی پنجمین کارکتر باشد و / بعدی باید کارکتر هشتم باشد شرط بعدی هم بایستی تعداد کارکترهای ورودی ۱۰ تا باشد.
چنانچه همه این شروط درست بود سپس ماکرو test اجرا شود

mohsenmrds
2016/09/12, 13:19
باتشکر فراوان از توضیحات جامع
یک عدد 6 هم در کد دیده میشه اون معرف چی هست؟
هنوز کد با اون شرایط اجرا نمیشه فایل پیوستی که زحمت کشیدین پیوست کردین هم امتحان کردم اونم اجرا نمیشه ( ماکرو در اکسل رو فعال کردم و ماکروهای دیگر اجرا میشن )
ولی فایل پیوست که زحمت کشیدین فرستادین اجرا نشد( تاریخ با همون فرمت وارد کردم ماکرو ok اجرا نشد و پیام ok نیومد )
باتشکر

iranweld
2016/09/13, 07:51
مشکل فایل رفع شد دوباره از پست قبلی دانلود کنید.

در مورد


InStr(6, Target, "/")

بعد از ششمین کارکتر در یک سلول موقعیت کارکتر "/" را مشخص مینماید

RezaKasra
2018/03/23, 00:43
سلام دوستان
خواهشا اگه کسی میتونه کمکم کنه ممنون میشم
یه فایل دارم تو یکی از شیتها روی کامند باتن که کلیک میکنم فرم مربوطه رو نمایش نمیده مشکل کار کجاست . درضمن به فرمت enable macro هم ذخیره کردم . ممنون میشم

misammisam
2018/03/23, 15:18
سلام دوستان
خواهشا اگه کسی میتونه کمکم کنه ممنون میشم
یه فایل دارم تو یکی از شیتها روی کامند باتن که کلیک میکنم فرم مربوطه رو نمایش نمیده مشکل کار کجاست . درضمن به فرمت enable macro هم ذخیره کردم . ممنون میشم
سلام
با فرمت XlSX ذخیره کردید که در این صورت تمام کدهای ماروهاتون موقع ذخیره کردن پاک میشه ، باید فایلتونو با پسوند XLSM ذخیره کنید .

9f8b9bdf@emailn
2018/07/07, 16:52
سلام
من ماکرو یی میخوام بنویسم که برود اطلاعات شیت را بخواند و اگر مقدار شیت تغییر کرد آن مقدار را در شیت دیگر ثبت کنم باتشکر