کند شدن پردازش با دستور: Worksheet_SelectionChange

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Ali Parsaei
    مدير تالارتوابع اکسل

    • 2013/11/18
    • 1522
    • 71.67

    کند شدن پردازش با دستور: Worksheet_SelectionChange

    با عرض سلام و تشکر از زحمات دوستان،
    من کدي در يک شيت نوشته ام که يک کامند بوتن فقط در هنگام انتخاب ده يازده سل خاص نمايان شود و در غير اين صورت مخفي گردد.
    با توجه به اينکه کد تحت عنوان Worksheet_SelectionChange نوشته شده برداشت من اين است که با هر بار جابجايي بين خانه ها در شيت مربوطه اين کد جهت بررسي درست يا غلط بودن خود يک بار اجرا مي گردد.
    مي خواستم بدانم در صورتي که برداشت من صحيح است، آيا مي توان کد را به گونه اي نوشت که از اين حجم محاسبات و اشغال حافظه کاست؟
    اين هم کد:
    کد PHP:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If 
    ActiveCell.Row And ActiveCell.Column 16 And ActiveCell.Column 30 Then
        CommandButton1
    .Visible True
        
    Else
        
    CommandButton1.Visible False
        End 
    If
    End Sub 
    [SIGPIC][/SIGPIC]
  • ~M*E*H*D*I~
    • 2011/10/19
    • 4377
    • 70.00

    #2
    اگر رویدادی جز این رویداد نمیشه استفاده کرد با استفاده از گزاره زیر سرعت رو میشه بهبود داد
    کد HTML:
    application.ScreenUpdating=False
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]

    کامنت

    • Ali Parsaei
      مدير تالارتوابع اکسل

      • 2013/11/18
      • 1522
      • 71.67

      #3
      ممنونم،
      مشکل اصلي ام همين است که اصولا" از رويداد ديگري مي شود استفاده کرد يا نه؟ مثلا" رويدادي که به جاي بررسي change شدن انتخاب در کل شيت، فقط change شدن انتخاب مثلا" در سطر سوم را بررسي کند!
      نمي دانم! شايد انتظار غير معقولي باشد!
      [SIGPIC][/SIGPIC]

      کامنت

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

        #4
        نوشته اصلی توسط علي پارسا
        ممنونم،
        مشکل اصلي ام همين است که اصولا" از رويداد ديگري مي شود استفاده کرد يا نه؟ مثلا" رويدادي که به جاي بررسي change شدن انتخاب در کل شيت، فقط change شدن انتخاب مثلا" در سطر سوم را بررسي کند!
        نمي دانم! شايد انتظار غير معقولي باشد!
        اگه اشتباه نکنم برای اون فایل شجره نامه این کد نوشته شده ، رویدادی جز این رویداد نمیشه بکار برد تنها را افزایش سرعت اینه که حتی الامکان از ایجاد غیرضروری در سلول ها پرهیز بشه و جلوه ها بصری حین اجرای کد غیر فعال بشه
        [CENTER]
        [SIGPIC][/SIGPIC]
        [/CENTER]

        کامنت

        • Ali Parsaei
          مدير تالارتوابع اکسل

          • 2013/11/18
          • 1522
          • 71.67

          #5
          کد را براي فايل دفترچه تلفن (که تو قسمت تشکرها بهش اشاره کرده بودم) نوشته ام، خيلي ممنون از راهنماييتون.
          [SIGPIC][/SIGPIC]

          کامنت

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

            #6
            نوشته اصلی توسط علي پارسا
            کد را براي فايل دفترچه تلفن (که تو قسمت تشکرها بهش اشاره کرده بودم) نوشته ام، خيلي ممنون از راهنماييتون.
            خب پس باید دید این ظاهر شدن و مخفی شدن کامند باتن رو برای چه کاری لازم داری تا بشه دنبال راه جایگزین گشت
            [CENTER]
            [SIGPIC][/SIGPIC]
            [/CENTER]

            کامنت

            • امين اسماعيلي
              مدير تالار ويژوال بيسيك

              • 2013/01/17
              • 1198
              • 84.00

              #7
              با درود
              اقا از کد زیر استفاده کن ببین مشکلت حل میشه
              کد:
              Private Sub Worksheet_SelectionChange(ByVal Target As Range)
              If Not Intersect(Target, Range("p3:Ab3")) Is Nothing Then
              CommandButton1.Visible = True
              Else
              CommandButton1.Visible = False
              End If
              End Sub
              واسه SELECTION CHANGE حالا شما واسه CHANGE هم همینو میتونی بنویسی که تو هر دو موقعیت عمل کنه .. بعدشم چرا مسئله رو اینهمه پیچیده اش کردی . در واقه از ستون P تا Ab ردیف سوم نیاز به این همه If نداشت .
              دکمه رو هم یادت نره اول بزاری تو صفحه و بعدشم visible اش رو بزار رو False تست کن
              در پناه خداوندگار ایران زمین باشید و پیروز

              کامنت

              چند لحظه..