درخواست تهیه دستور vba

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

    • 2019/04/30
    • 51

    [حل شده] درخواست تهیه دستور vba

    با سلام
    جدولی دارم از A1 تا I200
    امکانش هست هر بار که جدول رو بالا یا پایین می برمم،
    هر گاه ردیف 50 در بالا بجای ر دیف 1 قرار گرفت خودکار فریزیا ثابت شود؟ وبه پایین دست رسی داشته باشم و
    مجددا بتوانم جدول را بالاببرم و به ردیف های 50 تا 1 اون دسترسی داشته باشم.
    امکانش هست خودکار با دستور vba انجام بشه
    ممنون از لطفتون
  • M_ExceL

    • 2018/04/23
    • 677

    #2
    سلام،
    متوجه منظور شما نشدم
    لطفا در این خصوص فایل یا تصویر پیوست کنید
    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
    [/CENTER]

    کامنت

    • omid0912

      • 2019/04/30
      • 51

      #3
      نوشته اصلی توسط m_excel
      سلام،
      متوجه منظور شما نشدم
      لطفا در این خصوص فایل یا تصویر پیوست کنید

      با سلام
      ممنون از توجه شما
      عزیز ببین من یک جدول در یک شیت دارم
      مثلا در شیت یک از سلول a1 تاسلول h200 جدول دارم و یک سری اطلاعات.
      مثلا در ردیف 50 ازجدول فوق در a50 نام b50 نام خانوادگی c50 فلان و ... H50 تاریخ تولد رو دارم.
      در حالت عادی هر بار که فایل اکسل رو که ابتدا باز می کنیم شیت یک از a1 رو می بینیم تا h23 حالا اسکرول می کنیم به پایین تر
      الان a24 رو می بینم تا h 46
      و نیاز هست که برم پایین تر ، مجددا اسکرول می کنم رو به پایین
      اینجا می خوام ردیف 50 که در بالا قرار گرفت خودکار (با دستور vba) فریز بشه ( در بالاترین مکان که قرار گرفت فریز بشه)
      تا ردیف 50 ازجدول فوق در a50 نام b50 نام خانوادگی c50 فلان و ... H50 تاریخ تولد ثابت بماند و
      مجددا خواستم اسکرول کنم به بالا یعنی برم ردیف مثلا a20 با دستور vba که قبلا دادیم خودکار از حالت (فریز میگید، ثابت میگید، اسمش هر چی هست) خودش خارج بشه.
      یعنی یک بار کلید رو بزنم و هر بار خودکار با اسکرول کردن فریز کنه و خود کار خارج بشه.
      متاسفانه این چیزی نیست که بشه روی فایل بفرستم براتون.
      اسکرول رو به پایین رفتم ردیف 50 ثابت بماند اسکرول رو به بالا که خواستم برم خودش خارج بشه
      امیدوام که درست توضیح داده باشم.
      ممنون از لطفتون.
      Last edited by omid0912; 2020/11/27, 17:04.

      کامنت

      • M_ExceL

        • 2018/04/23
        • 677

        #4
        نوشته اصلی توسط omid0912
        با سلام
        ممنون از توجه شما
        عزیز ببین من یک جدول در یک شیت دارم
        مثلا در شیت یک از سلول a1 تاسلول h200 جدول دارم و یک سری اطلاعات.
        مثلا در ردیف 50 ازجدول فوق در a50 نام b50 نام خانوادگی c50 فلان و ... H50 تاریخ تولد رو دارم.
        در حالت عادی هر بار که فایل اکسل رو که ابتدا باز می کنیم شیت یک از a1 رو می بینیم تا h23 حالا اسکرول می کنیم به پایین تر
        الان a24 رو می بینم تا h 46
        و نیاز هست که برم پایین تر ، مجددا اسکرول می کنم رو به پایین
        اینجا می خوام ردیف 50 که در بالا قرار گرفت خودکار (با دستور vba) فریز بشه ( در بالاترین مکان که قرار گرفت فریز بشه)
        تا ردیف 50 ازجدول فوق در a50 نام b50 نام خانوادگی c50 فلان و ... H50 تاریخ تولد ثابت بماند و
        مجددا خواستم اسکرول کنم به بالا یعنی برم ردیف مثلا a20 با دستور vba که قبلا دادیم خودکار از حالت (فریز میگید، ثابت میگید، اسمش هر چی هست) خودش خارج بشه.
        یعنی یک بار کلید رو بزنم و هر بار خودکار با اسکرول کردن فریز کنه و خود کار خارج بشه.
        متاسفانه این چیزی نیست که بشه روی فایل بفرستم براتون.
        اسکرول رو به پایین رفتم ردیف 50 ثابت بماند اسکرول رو به بالا که خواستم برم خودش خارج بشه
        امیدوام که درست توضیح داده باشم.
        ممنون از لطفتون.
        با سلام،
        تا جایی که بنده اطلاع دارم روش یا رویدادی جهت تشخیص اسکرول در صفحه شیت اکسل وجود ندارد
        ولی شما می تونید از رویدادی مانند SelectionChange جهت اجرای کد مورد نظر استفاده کنید
        برای مثال میشه کاری کرد که وقتی روی سلول A50 کلیک کردید ردیف مورد نظر فریز شود و ردیف های بالایی پنهان گردند
        [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
        [/CENTER]

        کامنت

        • omid0912

          • 2019/04/30
          • 51

          #5
          نوشته اصلی توسط M_ExceL
          با سلام،
          تا جایی که بنده اطلاع دارم روش یا رویدادی جهت تشخیص اسکرول در صفحه شیت اکسل وجود ندارد
          ولی شما می تونید از رویدادی مانند SelectionChange جهت اجرای کد مورد نظر استفاده کنید
          برای مثال میشه کاری کرد که وقتی روی سلول A50 کلیک کردید ردیف مورد نظر فریز شود و ردیف های بالایی پنهان گردند

          سلام و عرض ادب
          یعنی همون بطور معمول
          انتخاب سلول i51 و از تب ویو سطر 50 رو دستی فریز کنم.
          یعنی در کل منظورتون این هست که امکان نوشتن دستورvba برای این کار رو نداره.
          اگر منظورتون این نیست که لطفا برام دستور vba بنویسید.
          من سررشته ندارم فقط در حد جمع و تفریقه ساده بلدم، کد نویسی هم اصلا بلد نیستم.
          ممنون که وقت میذارید و پاسخ میدید.

          کامنت

          • M_ExceL

            • 2018/04/23
            • 677

            #6
            نوشته اصلی توسط omid0912
            سلام و عرض ادب
            یعنی همون بطور معمول
            انتخاب سلول i51 و از تب ویو سطر 50 رو دستی فریز کنم.
            یعنی در کل منظورتون این هست که امکان نوشتن دستورvba برای این کار رو نداره.
            اگر منظورتون این نیست که لطفا برام دستور vba بنویسید.
            من سررشته ندارم فقط در حد جمع و تفریقه ساده بلدم، کد نویسی هم اصلا بلد نیستم.
            ممنون که وقت میذارید و پاسخ میدید.
            با سلام،
            در فایل پیوست با انتخاب سلولهای A50,A100,A150,A200 الی اخر بصورت متوالی، در صورتی که کلمه "name" داخل آن وارد شده باشد ردیف مورد نظر فریز می شود
            ردیف های قبلی پنهان می شود و یک فلش رو به سمت بالا در سمت چپ ردیف مورد نظر نمایان می گردد
            با انتخاب فلش به ردیف فریز بالایی منتقل می شوید
            این کد ها مخصوص این فایل فرضی نوشته شده است و اگر قصد دارید در فایل اصلی خودتون از این کد ها استفاده کنید،
            می بایست متناسب با فایلتون تغییراتی در کدها صورت پذیرد
            کد:
            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            
            If ActiveWindow.FreezePanes = True Then
            
                ActiveWindow.FreezePanes = False
                
            End If
            
            If Not Intersect(Range("a" & Target.Row), Target) Is Nothing Then
            
                If Target.Count = 1 Then
                
                    If Target.Row > 1 And Target = "name" Then
                    
                        ActiveSheet.Shapes("Up Arrow 1").Visible = True
                        
                        ActiveSheet.Shapes("Up Arrow 1").Top = Target.Offset(0, 8).Top
                        
                        ActiveSheet.Shapes("Up Arrow 1").Left = Target.Offset(0, 8).Left + 5
                        
                        ActiveSheet.Shapes("Up Arrow 1").Width = 15
                        
                        ActiveSheet.Shapes("Up Arrow 1").Height = Target.Height
                        
                        Range("a1:a" & (Target.Row - 1)).EntireRow.Hidden = True
                        
                        Target.Offset(1, 0).Select
                        
                        ActiveWindow.FreezePanes = True
                        
                    End If
                    
                End If
                
            End If
            
            End Sub
            کد:
            Sub M_E()
            
            If ActiveWindow.FreezePanes = True Then
            
                ActiveWindow.FreezePanes = False
                
            End If
            
            Columns("a").EntireRow.Hidden = False
            
            ActiveSheet.Shapes("Up Arrow 1").Width = 15
            
            ActiveSheet.Shapes("Up Arrow 1").Height = 15
            
            ActiveSheet.Shapes("Up Arrow 1").Visible = False
            
            
                    
                    c = ActiveCell.Row
                    
                    t = 0
                    
                    While t <> 2
                    
                        If Cells(c, 1) = "name" Then
                        
                            t = t + 1
                        
                        End If
                    
                    c = c - 1
                    
                    Wend
                    
                    Cells(c + 1, 1).Select
            
            
            
            End Sub
            فایل های پیوست شده
            [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
            [/CENTER]

            کامنت

            • omid0912

              • 2019/04/30
              • 51

              #7
              سلام مجدد
              ممنون از محبت شما بزرگوار
              خیلی عالی بود در دو شیت می تونم استفاده کنم.
              فقط نتونستم تغیرات رو انجام بدم
              یکی اینکه name در ستون E باشه و
              شیپ هم اون بالا در سلول C قرار بگیره
              تغیرات دادم ارور داد فقط در دو شیت رو تونستم اجرا کنم البته با فایل فرضی
              اگه محبت کنید تغیرات رو انجام بدید دیگه خیلی شرمنده میشم.
              واقعا لطف کردید سپاس گذارم.
              عالیه دست تون درد نکنه.

              کامنت

              • omid0912

                • 2019/04/30
                • 51

                #8
                سلام
                موفق شدم بدون ارور جابجا کنم و در فایل اصلی بکار بگیرم.
                واقعا عالی بود
                ممنون از وقتی که گذاشتید.

                کامنت

                چند لحظه..