اجرای ماکرو از طریق ورود اطلاعات در سلول

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • maziardm

    • 2013/05/17
    • 450

    [حل شده] اجرای ماکرو از طریق ورود اطلاعات در سلول

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

    • 2014/04/04
    • 892
    • 64.00

    #2
    نوشته اصلی توسط maziardm
    با سلام و روز خوش
    در فایل پیوستی یک ماکرو ایجاد کردم که طی آن ستون b رو بر اساس مقدار وروری در سلول b 1 عملیات فیلتر رو انجام میده. این کار رو هم درست انجام میده.
    اما مشکل اینجاست که ورود مقدار در سلول b1 برای run کردن ماکرو سه راه رو بلدم انجام بدم: 1- انتخاب گزینه ران در آیتم ماکرو. 2- ایجاد شیپ و اتصال آن به ماکرو. 3- ایجاد میانبر توسط کلید های ترکیبی (برای مثال Ctrl+q)
    ولی یه راه دیگه هم میدونم وجود داره. به این راه به محض ورود اطلاعات در سلول بی 1 و زدن دکمه اینتر ماکرو خود به خود عمل می کنه. و عمل فیلتر انجام میشه. این کار رو تو برخی فایل ها دیدم ولی نتونستنم سر در بیارم.
    ممنون میشم راهنمایی کنید که چطوری این کار انجام میشه.
    با تشکر
    سلام
    کد PHP:
    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:=2Criteria1:=Range("b1"), Operator:=xlAnd
    End 
    If
    End Sub 
    فایل های پیوست شده
    [CENTER][SIGPIC][/SIGPIC]
    [/CENTER]
    [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
    [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
    [/CENTER]
    [/INDENT]

    [/FONT][/FONT][/FONT][/FONT][/FONT]
    [/CENTER]

    کامنت

    • maziardm

      • 2013/05/17
      • 450

      #3
      با سلام مجدد و تشکر آقا میثم
      واقعا لطف کردید. فقط میشه توضیح مختصری بدید چه کار کردید. و چه موارد الزامی رو به ماکرو مورد نظر من اظافه کردید. من دستوری رو که شما نوشتید دیدم ولی واقعیتش نفهمیدم کدومش الزامی برای کار مورد نظر من هستش.
      ساده تر بگم اگه خواستم ماکرو های دیگه ای رو بنویسم و بخوام با ورود مقدار در یه سلول ماکرو خود به خود اجرا بشه و نیاز به مواردی نظیر کلید میانبر برای اجرای ماکرو نداشته باشم چیکار کنم و جه مواردی رو به ماکرو مورد نظر اضافه کنم.
      با تشکر دوباره

      کامنت

      • misammisam
        مدير تالار حسابداری و اکسل

        • 2014/04/04
        • 892
        • 64.00

        #4
        نوشته اصلی توسط maziardm
        با سلام مجدد و تشکر آقا میثم
        واقعا لطف کردید. فقط میشه توضیح مختصری بدید چه کار کردید. و چه موارد الزامی رو به ماکرو مورد نظر من اظافه کردید. من دستوری رو که شما نوشتید دیدم ولی واقعیتش نفهمیدم کدومش الزامی برای کار مورد نظر من هستش.
        ساده تر بگم اگه خواستم ماکرو های دیگه ای رو بنویسم و بخوام با ورود مقدار در یه سلول ماکرو خود به خود اجرا بشه و نیاز به مواردی نظیر کلید میانبر برای اجرای ماکرو نداشته باشم چیکار کنم و جه مواردی رو به ماکرو مورد نظر اضافه کنم.
        با تشکر دوباره
        خیلی سادست ، تو قسمت خود شیت مورد نظر هر چیزی که داخل کد زیر بنویسید بعد از Change شدن ( تغییر دادن ) هر سلول کدهای داخلش اجرا میشه :
        کد PHP:
        Private Sub Worksheet_Change(ByVal Target As Range)

        End Sub 
        و با یه if هم گفتیم بعد از اینکه سلولولی رو تغییر دادیم کدوم سلول ، سلول فعالمون باشه ، یعنی یه محدوده تعریف کردیم که کدها فقط وقتی اگه نشانگر اکسل روی این سلولها بود اجرا بشه و نه همه سلولها ، چون تو قطعه کد بالا عملیات هر وقت سلولی Change بشه اجرا میشه .
        کد PHP:
        If (ActiveCell.Address "$B$2" Or ActiveCell.Address "$C$1" Or ActiveCell.Address "$A$1"Then

        End 
        If 
        اینم کدیه که خودتون نوشتید :
        کد PHP:
        ActiveSheet.Range("$A$2:$g$15").AutoFilter Field:=2Criteria1:=Range("b1"), Operator:=xlAnd 
        [CENTER][SIGPIC][/SIGPIC]
        [/CENTER]
        [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
        [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
        [/CENTER]
        [/INDENT]

        [/FONT][/FONT][/FONT][/FONT][/FONT]
        [/CENTER]

        کامنت

        • maziardm

          • 2013/05/17
          • 450

          #5
          با سلام و تشکر مجدد
          ببخشید این یه تیکه رو خیلی خوب متوجه نشدم. میشه یکم بیشتر توضیح بدید. بازم معذرت. بزارید روی تنبلی من و بد فهمی من.


          نوشته اصلی توسط misammisam

          و با یه if هم گفتیم بعد از اینکه سلولولی رو تغییر دادیم کدوم سلول ، سلول فعالمون باشه ، یعنی یه محدوده تعریف کردیم که کدها فقط وقتی اگه نشانگر اکسل روی این سلولها بود اجرا بشه و نه همه سلولها ، چون تو قطعه کد بالا عملیات هر وقت سلولی Change بشه اجرا میشه .
          کد PHP:
          If (ActiveCell.Address "$B$2" Or ActiveCell.Address "$C$1" Or ActiveCell.Address "$A$1"Then

          End 
          If 
          [/PHP]

          کامنت

          • misammisam
            مدير تالار حسابداری و اکسل

            • 2014/04/04
            • 892
            • 64.00

            #6
            نوشته اصلی توسط maziardm
            با سلام و تشکر مجدد
            ببخشید این یه تیکه رو خیلی خوب متوجه نشدم. میشه یکم بیشتر توضیح بدید. بازم معذرت. بزارید روی تنبلی من و بد فهمی من.
            وقتی یه سلولو ویرایش میکنی و کلید اینتر رو میزنی بنا به تنظیمات اکسل نشانگر به یه سلول پایینتر یا چپ و راست انتقال پیدا میکنه ، ما با این if گفتیم اگر بعد از ویرایش سلول پایین یا سلول چپ یا راست ، سلول b1 سلول فعال بود ، فقط در این حالت کدهای داخل if رو اجرا کن .
            [CENTER][SIGPIC][/SIGPIC]
            [/CENTER]
            [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
            [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
            [/CENTER]
            [/INDENT]

            [/FONT][/FONT][/FONT][/FONT][/FONT]
            [/CENTER]

            کامنت

            • Amir Ghasemiyan

              • 2013/09/20
              • 4598
              • 100.00

              #7
              دوست عزيز اگر جواب سوالتون رو گرفتين لطفا تاپيك رو حل شده كنيد

              کامنت

              چند لحظه..