اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • HEYDARDOOST_REZA
    • 2011/11/03
    • 2

    اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

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

    • 2010/05/22
    • 174

    #2
    RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

    سلام دوست عزیز!

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

    وقتی داخل اکسل هستید 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
    -------
    [url=http://md6712.com]http://md6712.com[/url]
    جامعه ایده پردازان: http://idekadeh.com

    کامنت

    • ~M*E*H*D*I~
      • 2011/10/19
      • 4377
      • 70.00

      #3
      RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

      با سلام

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

      ممنون اگر دوستان پاسخ بدن
      [CENTER]
      [SIGPIC][/SIGPIC]
      [/CENTER]

      کامنت

      • Javid Mokhtari
        مدير تالار ويژوال بيسيك

        • 2012/01/16
        • 1212
        • 73.00

        #4
        RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

        با سلام. آقای HEYDARDOOST_REZA ;
        نمی دونم چرا می خواین از حالت Enter استفاده کنید ،اما من به شما توصیه می کنم که از رویداد Enter برای وارد کردن اطلاعات در شیت یا کارهای دیگه استفاده نکنید(بجز مواقع ضروری).برای اینکه با کوچکترین تغییری در آدرس یا محتویات سلول کد اجرا شده و بسیار اعصاب خورد هستش.
        [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
        بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

        شرکت در دوره:
        [/FONT][/SIZE]
        [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
        [/B][/FONT][/SIZE]
        [/CENTER]
        [/INDENT]
        [/FONT]

        کامنت

        • m_d6712

          • 2010/05/22
          • 174

          #5
          RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

          نوشته اصلی توسط vatanparast
          با سلام

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

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

          target.value = ""
          یا

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

          قابلیت debug در این روش هم فعال است.
          -------
          [url=http://md6712.com]http://md6712.com[/url]
          جامعه ایده پردازان: http://idekadeh.com

          کامنت

          • ~M*E*H*D*I~
            • 2011/10/19
            • 4377
            • 70.00

            #6
            RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

            سلام
            ممنون از پاسختون اگر اشتباه نکنم به این موارد event گفته میشه (اگر اشتباه میگم تصحیح کنید)مثلا با کلیک کردن میشه ماکرو رو اجرا کرد ، اگه امکان داره در مورد انواع event ها توضیح بدید یا اگه جزوه ای دارید به اشتراک بذارید ممنون
            [CENTER]
            [SIGPIC][/SIGPIC]
            [/CENTER]

            کامنت

            • Javid Mokhtari
              مدير تالار ويژوال بيسيك

              • 2012/01/16
              • 1212
              • 73.00

              #7
              RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

              با سلام.
              دوست عزیز هر شیئی که در اکسل وجود دارد event(رویداد) مخصوص به خود را دارد مثلاً شیئی workbook رویداد مخصوص خود و شیئی worksheetرویداد مخصوص به خود و... ،را دارد(البته در بعضی رویداد ها مشترکند) حال شما رویداد کدام شیئ را می خواهید؟ چون رویداد ها خیلی زیادند. با تشکر
              [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
              بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

              شرکت در دوره:
              [/FONT][/SIZE]
              [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
              [/B][/FONT][/SIZE]
              [/CENTER]
              [/INDENT]
              [/FONT]

              کامنت

              • ~M*E*H*D*I~
                • 2011/10/19
                • 4377
                • 70.00

                #8
                RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

                سلام
                ممنون از پاسختون منظور من بیشتر رویداد هایی هست که به وسیله او میشه مثلا در یک worksheet ماکرو رو اجرا کرد مثلا
                name_change
                name_click
                name_keypress
                و... من دنبال مرجعی هستم که این رویداد ها به صورت دسته بندی شده توضیح داده شده باشن
                [CENTER]
                [SIGPIC][/SIGPIC]
                [/CENTER]

                کامنت

                • Javid Mokhtari
                  مدير تالار ويژوال بيسيك

                  • 2012/01/16
                  • 1212
                  • 73.00

                  #9
                  RE: اجرا كردن ماكروها بمحض زدن enter بدون استفاده از ميانبرها و يا button ها

                  با سلام.
                  خودم هم دنبال همچین مرجعی بودم ولی پیدا نکردم.تصمیم گرفتم خودم یه مجموعه event هارو تهیه کنم.در اولین فرصت واستون می فرستم.
                  [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
                  بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

                  شرکت در دوره:
                  [/FONT][/SIZE]
                  [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
                  [/B][/FONT][/SIZE]
                  [/CENTER]
                  [/INDENT]
                  [/FONT]

                  کامنت

                  • mohsenmrds
                    • 2015/08/25
                    • 3

                    #10
                    با عرض سلام خدمت همه اساتید عزیز
                    سوال من اینه که چطور میتونم یک رنج رو مشخص کنم به این صورت که اگر تو اون رنج تاریخ ( شمسی ترجیحا ) وارد بشه یک ماکرو اجرا بشه
                    باتشکر

                    کامنت

                    • iranweld

                      • 2015/03/29
                      • 3341

                      #11
                      با استفاده از رویدادها محدوده مورد نظر برای ورود دیتا را تعریف نموده و سپس شرط ورود تاریخ شمسی را تعریف مینماید سپس در صورت برقراری شروط ماکروی مورد نظر اجرا گردد.

                      کد PHP:
                      Sub Worksheet_Change(ByVal Target As Range)

                          If 
                      Not Intersect(TargetMe.Range("A1:A100")) Is Nothing Then
                          
                          On Error Resume Next
                          
                          
                      If Left(Target2) > 13 And InStr(Target"/") = And InStr(6Target"/") = And Len(Target) = 10 Then
                         
                         
                      'If IsDate(Target) Then
                              
                          TEST
                          
                          End If
                          
                          End If
                          
                          End Sub 
                      ماکرو مورد نظر

                      کد PHP:
                      Sub TEST()

                      MsgBox "OK"

                      End Sub 
                      Click image for larger version

Name:	Untitled.png
Views:	1
Size:	38.9 کیلو بایت
ID:	130770
                      فایل های پیوست شده
                      Last edited by iranweld; 2016/09/13, 08:49.

                      کامنت

                      • mohsenmrds
                        • 2015/08/25
                        • 3

                        #12
                        باسلام و تشکر از شما دوست عزیز
                        ممکنه این قسمتها رو برای من توضیح بدین چکار میکنه؟
                        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

                          • 2015/03/29
                          • 3341

                          #13
                          مورد اول برای قابلیت رویدادها در اکسل رنجی را تعریف میکنیم که اگر در آن سلولها تغییری در دیتای آنها صورت گرفت آنگاه شرط دوم بررسی شود در شرط دوم چون فرمودید تاریخ شمسی اگر وارد شود بررسی میکنیم که دو رقم ابتدایی آن ۱۳ باشد که فعلا تاریخ شمسی با ان شروع میشود سپس چون سال چهار رقمی است پس از آن علامت / بایستی پنجمین کارکتر باشد و / بعدی باید کارکتر هشتم باشد شرط بعدی هم بایستی تعداد کارکترهای ورودی ۱۰ تا باشد.
                          چنانچه همه این شروط درست بود سپس ماکرو test اجرا شود

                          کامنت

                          • mohsenmrds
                            • 2015/08/25
                            • 3

                            #14
                            باتشکر فراوان از توضیحات جامع
                            یک عدد 6 هم در کد دیده میشه اون معرف چی هست؟
                            هنوز کد با اون شرایط اجرا نمیشه فایل پیوستی که زحمت کشیدین پیوست کردین هم امتحان کردم اونم اجرا نمیشه ( ماکرو در اکسل رو فعال کردم و ماکروهای دیگر اجرا میشن )
                            ولی فایل پیوست که زحمت کشیدین فرستادین اجرا نشد( تاریخ با همون فرمت وارد کردم ماکرو ok اجرا نشد و پیام ok نیومد )
                            باتشکر
                            Last edited by mohsenmrds; 2016/09/12, 22:12.

                            کامنت

                            • iranweld

                              • 2015/03/29
                              • 3341

                              #15
                              مشکل فایل رفع شد دوباره از پست قبلی دانلود کنید.

                              در مورد

                              کد PHP:
                              InStr(6Target"/"
                              بعد از ششمین کارکتر در یک سلول موقعیت کارکتر "/" را مشخص مینماید

                              کامنت

                              چند لحظه..