ساده در مورد اسکرول شیت از طریق کد

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Juliet

    • 2014/06/17
    • 47
    • 61.00

    ساده در مورد اسکرول شیت از طریق کد

    درود دوستان
    امید است که شاداب بوده باشید
    -----
    یک سؤال ساده دارم اما قبلش اجازه میخوام کلیتی از فایلم بگم که واضح تر باشه. من یه فرم خروجی یا در واقع فیلتر مقادیر از طریق ماکرو دارم که بر اساس مقادیری ورودی کاربر تعداد سطر هایی براش استخراج میشه در شیت خروجی. ولی بالاخره زمانی میرسه که این خروجی بسته میشه و خروجی بعدی شروع میشه. برای این هم دکمه ای گزاشتم که با تأیید کاربر مقادیر حذف میشن و شیت برای شروع خروجی جدید آماده میشه

    اینجا یه مشکل کوچیک دارم:::
    ممکنه من تو خروجی قبلی تا شماره سطر های سه رقمی هم رفته باشم پایین، نمیخوام دستی اسکرول شه بالا، یه خط کد میخوام که بزارم انتهای دکمه "Clear" و شیت رو اسرول کنه تا انتها بالا چون ممکنه طرف اد بزنه و حواسش به اسکرول نباشه دوباره بزنه یا فکر کنه مشکلی پیش اومده



    عجب!!! همین الان داشتم سؤالم مینوشتم متوجه شدم موقع گرفتن خروجی هم احتمالاً اسکرول به آخرین سلول صاحب مقادیر ندارم، اونم مرسی! :D
    [CENTER][COLOR=#006400]«زمانيکه با زمانه خويش نساختي و با [/COLOR][COLOR=#b22222][B]مسندنشينان[/B][/COLOR][COLOR=#006400] و [/COLOR][B][COLOR=#b22222]امربران[/COLOR][/B][COLOR=#006400] ايشان کنار نيامدي
    و آنچه را [/COLOR][B][COLOR=#b22222]جاهلان [/COLOR][/B][COLOR=#006400]ميگويند، جاهلانه باز نگفتي،
    لاجرم به تبعيد ابدي گرفتار خواهي شد!
    حتي اگر جسمت در کنج منزلي در شهري ساکن باشد؛
    و اگر بر نپذيرفتن، پاي فشردي،

    [/COLOR][COLOR=#3366cc][B]آواره ات خواهند کرد،
    [/B][/COLOR][COLOR=#3333cc][B]به زندانت خواهند افکند
    [/B][/COLOR][COLOR=#333366][B] و به دارت خواهند کشيد ...»[/B][/COLOR][COLOR=#006400]
    [/COLOR][/CENTER]
  • امين اسماعيلي
    مدير تالار ويژوال بيسيك

    • 2013/01/17
    • 1198
    • 84.00

    #2
    والا تو بگو من یه کلمه فهمیدم نفهمیدو ولی بزار ببینم منظورتون همینه ، شما شیت فیلترتون یه شیت خاص هست یا نه یعنی وقتی فیلتر میکنین اطلاعات به شیت خاصی فرستاده میشن ؟ من فک کنم شما در پیدا کردن اخرین ردف که اطلاعاتتون اونجا واردشده و میخوایین از بالا تا انتها که معلوم نیست کجاست پاک بشه اماده اطلاعات بعدی بشه اره؟
    در پناه خداوندگار ایران زمین باشید و پیروز

    کامنت

    • Juliet

      • 2014/06/17
      • 47
      • 61.00

      #3
      عزیزمی نه! منو باش مثلا این همه توضیح دادم که واضح بشه برای کسی که سؤالم رو میخونه!!!!

      این "فیلتر" که گفتم منظورم اون ابزار فیلتر منوی دیتا نبود، از لجاظ مفهومی گفتم مقادیر خاصی از دل کل بیرون میاد. واضح ترش میکنم:::::

      • شیت 1: شش هزار و خرده ای سطر که فیلد اول هر سطر یه کد یونیک گزاشتم
      • شیت 2: مثلا یکی از امکاناتش این که کاربر میگه از این کد تا اون کد رو اطلاعاتش رو بهم بده، جستجو انجام میشه، مقادیر از شیت 1 کپی میشن و همه چی خوبه


      بعد از این داستان فرض کنیم رسیدیم به سطر 100، کاربر میخواد از نو سرچ کنه، قبلی ها رو هم کاری نداره، یه دکمه گزاشتم که این کار رو براش میکنه، همه چیزش خوبه جز اینکه وقتی پاک کرد، دوباره صفحه اسکرول نمیشه بالا، همون سطر 100 به بعد رو میبینه، و هر چند در اثر جستجوی جدیدی مثلا 20 سطر اول براش پر بشن

      میخوام با زدن دکمه ای که همه رو براش پاک میکنه صفحه اسکرول هم بشه، چون دستی ممکنه فراموش بشه، و فکر کنی سرچت بی جواب مونده

      امیدوارم این بار بهتر توضیح داده باشم، ضمن اینکه بابت توضیح دفعه قبل عذر میخوام
      [CENTER][COLOR=#006400]«زمانيکه با زمانه خويش نساختي و با [/COLOR][COLOR=#b22222][B]مسندنشينان[/B][/COLOR][COLOR=#006400] و [/COLOR][B][COLOR=#b22222]امربران[/COLOR][/B][COLOR=#006400] ايشان کنار نيامدي
      و آنچه را [/COLOR][B][COLOR=#b22222]جاهلان [/COLOR][/B][COLOR=#006400]ميگويند، جاهلانه باز نگفتي،
      لاجرم به تبعيد ابدي گرفتار خواهي شد!
      حتي اگر جسمت در کنج منزلي در شهري ساکن باشد؛
      و اگر بر نپذيرفتن، پاي فشردي،

      [/COLOR][COLOR=#3366cc][B]آواره ات خواهند کرد،
      [/B][/COLOR][COLOR=#3333cc][B]به زندانت خواهند افکند
      [/B][/COLOR][COLOR=#333366][B] و به دارت خواهند کشيد ...»[/B][/COLOR][COLOR=#006400]
      [/COLOR][/CENTER]

      کامنت

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

        • 2014/04/04
        • 892
        • 64.00

        #4
        نوشته اصلی توسط Juliet
        عزیزمی نه! منو باش مثلا این همه توضیح دادم که واضح بشه برای کسی که سؤالم رو میخونه!!!!

        این "فیلتر" که گفتم منظورم اون ابزار فیلتر منوی دیتا نبود، از لجاظ مفهومی گفتم مقادیر خاصی از دل کل بیرون میاد. واضح ترش میکنم:::::

        • شیت 1: شش هزار و خرده ای سطر که فیلد اول هر سطر یه کد یونیک گزاشتم
        • شیت 2: مثلا یکی از امکاناتش این که کاربر میگه از این کد تا اون کد رو اطلاعاتش رو بهم بده، جستجو انجام میشه، مقادیر از شیت 1 کپی میشن و همه چی خوبه


        بعد از این داستان فرض کنیم رسیدیم به سطر 100، کاربر میخواد از نو سرچ کنه، قبلی ها رو هم کاری نداره، یه دکمه گزاشتم که این کار رو براش میکنه، همه چیزش خوبه جز اینکه وقتی پاک کرد، دوباره صفحه اسکرول نمیشه بالا، همون سطر 100 به بعد رو میبینه، و هر چند در اثر جستجوی جدیدی مثلا 20 سطر اول براش پر بشن

        میخوام با زدن دکمه ای که همه رو براش پاک میکنه صفحه اسکرول هم بشه، چون دستی ممکنه فراموش بشه، و فکر کنی سرچت بی جواب مونده

        امیدوارم این بار بهتر توضیح داده باشم، ضمن اینکه بابت توضیح دفعه قبل عذر میخوام
        سلام
        اگه درست متوجه شده باشم ، مشكل اينه كه بعد از فيلتر داده هاتون با كد vb اسكرولتون انقدر پايين مياد كه در صورت استفاده دوباره از اين كد ( دكمه ) اطلاعاتي كه در بالاي شيت فراخواني شده ديده نميشه .
        اگه دقيقا مشكلتون اين باشه ، خيلي راحت ميتونين تو آخر كد vb كه نوشتيد بزنيد
        کد PHP:
        Range("a1").Select 
        اينطوري اسكرول به اول صفحه بر ميگرده .
        [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]

        کامنت

        • Juliet

          • 2014/06/17
          • 47
          • 61.00

          #5
          نوشته اصلی توسط misammisam
          سلام
          اگه درست متوجه شده باشم ، مشكل اينه كه بعد از فيلتر داده هاتون با كد vb اسكرولتون انقدر پايين مياد كه در صورت استفاده دوباره از اين كد ( دكمه ) اطلاعاتي كه در بالاي شيت فراخواني شده ديده نميشه .
          اگه دقيقا مشكلتون اين باشه ، خيلي راحت ميتونين تو آخر كد vb كه نوشتيد بزنيد
          کد PHP:
          Range("a1").Select 
          اينطوري اسكرول به اول صفحه بر ميگرده .
          به جان خودم سراغ تابع Select رفتم، دقیقا نوشتم: Cells(3, 1).Select نمیدونم حواسم کجا بوده که فکر کردم کار نکرده، معذرت الکی وقتتون رو گرفتم.
          ولی خب، یه مورد دیگه مونده، وقتی مثلا 100 سطر اضافه میشه، همین بالا میمونه، چطوری میتونم آخرین سلول محتوا دار رو پیدا کنم با سلکت برم سراغش؟

          خیلی ممنون
          [CENTER][COLOR=#006400]«زمانيکه با زمانه خويش نساختي و با [/COLOR][COLOR=#b22222][B]مسندنشينان[/B][/COLOR][COLOR=#006400] و [/COLOR][B][COLOR=#b22222]امربران[/COLOR][/B][COLOR=#006400] ايشان کنار نيامدي
          و آنچه را [/COLOR][B][COLOR=#b22222]جاهلان [/COLOR][/B][COLOR=#006400]ميگويند، جاهلانه باز نگفتي،
          لاجرم به تبعيد ابدي گرفتار خواهي شد!
          حتي اگر جسمت در کنج منزلي در شهري ساکن باشد؛
          و اگر بر نپذيرفتن، پاي فشردي،

          [/COLOR][COLOR=#3366cc][B]آواره ات خواهند کرد،
          [/B][/COLOR][COLOR=#3333cc][B]به زندانت خواهند افکند
          [/B][/COLOR][COLOR=#333366][B] و به دارت خواهند کشيد ...»[/B][/COLOR][COLOR=#006400]
          [/COLOR][/CENTER]

          کامنت

          • khakzad

            • 2010/03/17
            • 2034
            • 85.00

            #6
            سلام
            اخرین سل پر شده رو می تونید از طریق count و offset بدست بیارید.:
            کد:
            range("a1").offset(worksheetfunction.count(range("a1:a100000")),0).select
            [/CODE]
            همچنین کد زیر هم اخرین سل پر شده رو به شرط عدم وجود انفصال بین داده ها بهتون میده!

            کد:
            range("a1").End(xlUp)
            [CENTER][B][COLOR=#008000][SIZE=3]محصولات و جزوات آموزش تخصصی [URL="https://excelpedia.net/"]اکسل[/URL] در:

            [URL="https://excelpedia.net/category/excel-functions/"]برترین مرجع تخصصی پارسی اکسل[/URL]
            [URL="http://www.exceliran.com/shop/"]جامعه اكسل ايرانيان: فروشگاه[/URL][/SIZE][/COLOR][/B]
            :wcom:

            [B][URL="https://excelpedia.net/"]آموزش اکسل تخصصی[/URL] و [URL="https://excelpedia.net/excel-ninja/"]پیشرفته[/URL] - [URL="https://excelpedia.net/"]تهران[/URL][/B]
            [EMAIL="h.khakzad@yahoo.com"]h.khakzad@yahoo.com[/EMAIL]
            [/CENTER]

            کامنت

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

              • 2014/04/04
              • 892
              • 64.00

              #7
              رديف آخرين سلول فعال رو در متغير lastrow ذخيره ميكنه .
              کد PHP:
              lastrow = .Cells.Find("*"SearchOrder:=xlByRowsSearchDirection:=xlPrevious).Row 
              در اين مورد آقاي اسمائيلي خيلي مطلب گذاشتن ، lastrow رو سرچ كنيد تا اطلاعات بيشتري در اين مورد كسب كنيد.
              [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]

              کامنت

              • Juliet

                • 2014/06/17
                • 47
                • 61.00

                #8
                نوشته اصلی توسط khakzad
                سلام
                اخرین سل پر شده رو می تونید از طریق count و offset بدست بیارید.:
                کد:
                range("a1").offset(worksheetfunction.count(range("a1:a100000")),0).select
                [/CODE]
                همچنین کد زیر هم اخرین سل پر شده رو به شرط عدم وجود انفصال بین داده ها بهتون میده!

                کد:
                range("a1").End(xlUp)
                درود بزرگوار
                نمیدونم اشکال کارم کجاست اما سطر دوم روی .End خطای کامپایل Invalid Use of Property میده،

                اما سطر دوم رو روی یک فایل خالی که از عدد 1 تا 600 یه سری عددی ساده ستون آ زده بودم امتحان کردم، کامل و بی اشکال بهم ج میداد، اما روی فایل اصلی - که البته سطر ها پیوسته نیستن و سطور خالی برای تفکیک گروه های مقادیر دارم، درست ج نمیده، مثلا وقتی حدود 200 سطر اضافه میشه میره روی سطر 100، بعد که حدود 400 سطر اضافه میکنم میره حدود 150!

                اما به هر صورت از شما سپاس گزارم، لطف کردین وقت گزاشتین
                [CENTER][COLOR=#006400]«زمانيکه با زمانه خويش نساختي و با [/COLOR][COLOR=#b22222][B]مسندنشينان[/B][/COLOR][COLOR=#006400] و [/COLOR][B][COLOR=#b22222]امربران[/COLOR][/B][COLOR=#006400] ايشان کنار نيامدي
                و آنچه را [/COLOR][B][COLOR=#b22222]جاهلان [/COLOR][/B][COLOR=#006400]ميگويند، جاهلانه باز نگفتي،
                لاجرم به تبعيد ابدي گرفتار خواهي شد!
                حتي اگر جسمت در کنج منزلي در شهري ساکن باشد؛
                و اگر بر نپذيرفتن، پاي فشردي،

                [/COLOR][COLOR=#3366cc][B]آواره ات خواهند کرد،
                [/B][/COLOR][COLOR=#3333cc][B]به زندانت خواهند افکند
                [/B][/COLOR][COLOR=#333366][B] و به دارت خواهند کشيد ...»[/B][/COLOR][COLOR=#006400]
                [/COLOR][/CENTER]

                کامنت

                • Juliet

                  • 2014/06/17
                  • 47
                  • 61.00

                  #9
                  نوشته اصلی توسط misammisam
                  رديف آخرين سلول فعال رو در متغير lastrow ذخيره ميكنه .
                  کد PHP:
                  lastrow = .Cells.Find("*"SearchOrder:=xlByRowsSearchDirection:=xlPrevious).Row 
                  در اين مورد آقاي اسمائيلي خيلي مطلب گذاشتن ، lastrow رو سرچ كنيد تا اطلاعات بيشتري در اين مورد كسب كنيد.
                  درود و سپاس بیحد از شما، آقای اسماعیلی . دیگر دوستان که محبت کردن و وقت گزاشتن
                  چشم، حتماً دنبال اون مباحث میرم

                  پاینده باشید




                  ضمناً همین جا، خودم، تبدیل شدن خودم رو از تازه وارد به کاربر سایت به خودم تبریک میگم!!!

                  نیومده عاشق اینجا شدم، خدا واسه همه نگهش داره :53::53::53::53::53::53::53:
                  [CENTER][COLOR=#006400]«زمانيکه با زمانه خويش نساختي و با [/COLOR][COLOR=#b22222][B]مسندنشينان[/B][/COLOR][COLOR=#006400] و [/COLOR][B][COLOR=#b22222]امربران[/COLOR][/B][COLOR=#006400] ايشان کنار نيامدي
                  و آنچه را [/COLOR][B][COLOR=#b22222]جاهلان [/COLOR][/B][COLOR=#006400]ميگويند، جاهلانه باز نگفتي،
                  لاجرم به تبعيد ابدي گرفتار خواهي شد!
                  حتي اگر جسمت در کنج منزلي در شهري ساکن باشد؛
                  و اگر بر نپذيرفتن، پاي فشردي،

                  [/COLOR][COLOR=#3366cc][B]آواره ات خواهند کرد،
                  [/B][/COLOR][COLOR=#3333cc][B]به زندانت خواهند افکند
                  [/B][/COLOR][COLOR=#333366][B] و به دارت خواهند کشيد ...»[/B][/COLOR][COLOR=#006400]
                  [/COLOR][/CENTER]

                  کامنت

                  چند لحظه..