ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
7 visibility
موضوع: آفیس توسط:

تیمز برگه هایی دارد که دارای دو بخش مجزا هستند (بگذارید آنها را بخش های بالا و پایین بنامیم) که سربرگ ستون ها کمی متفاوت است. او ردیف بالا را ثابت کرد تا سرصفحه های بخش بالایی در حین پیمایش به پایین قابل مشاهده باشد، اما پس از گذشتن از یک نقطه خاص، تیم در نهایت به داده های بخش پایین نگاه می کند و سرصفحه های بخش بالایی همچنان در بالا هستند. دوست دارم بدانم آیا راهی برای تغییر آن ردیف سرصفحه ثابت وجود دارد تا سرصفحه های بخش پایینی را زمانی که به سمت پایین حرکت می کند تا جایی که فقط داده های بخش پایین نشان داده می شوند نشان داده شود.

بله، راهی برای انجام این کار وجود دارد، اما شامل استفاده از ماکروها است. قبل از در نظر گرفتن یک راه حل مبتنی بر کلان، ممکن است بخواهید ساختار داده های خود را به گونه ای در نظر بگیرید که هر یک از بخش های شما در کاربرگ های مختلف باشد. (از دیدگاه طراحی، این ساده ترین راه حل خواهد بود.) اگر این امکان پذیر نیست، پس باید به ماکروها نگاه کنید.

یک روش آسان این است که به سادگی آنچه را که در ردیف بالایی (ردیف 1) کاربرگ ذخیره می شود، بسته به ردیف انتخاب شده تغییر دهید. به عنوان مثال، ماکرو زیر بر اساس محل قرارگیری سلول فعال، تغییراتی را در ردیف بالا ایجاد می کند. اگر قبل از ردیف 40 باشد، یک سری سرصفحه در ردیف اول قرار می گیرد. اگر بعد از ردیف 40، مجموعه دیگری از هدرها پر شده است.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim iBottomData As Integer

    iBottomData = 40

    If ActiveCell.Row < iBottomData Then
        Cells(1, 1).Value = "Last Name"
        Cells(1, 2).Value = "First Name"
        Cells(1, 3).Value = "Address"
        Cells(1, 4).Value = "Balance"
    Else
        Cells(1, 1).Value = "Account"
        Cells(1, 2).Value = "Sales Rep"
        Cells(1, 3).Value = "Status"
        Cells(1, 4).Value = ""
    End If
End Sub

برای استفاده از ماکرو، فقط مطمئن شوید که آن را در پنجره کد مربوط به کاربرگ حاوی دو بخش داده قرار دهید. همچنین باید مقدار تخصیص داده شده به متغیر iBottomData را تغییر دهید تا شماره ردیف جایی که بخش پایین داده شما شروع می شود را نشان دهد.

اگر می خواهید با حرکت به سمت پایین صفحه کار، ردیف ثابت را تغییر دهید، ماکرو باید کمی قوی تر باشد. در واقع، دو ماکرو وجود دارد که دنبال می شوند (هر دو دوباره در پنجره کد صفحه کار می روند)، و با تغییر سلول انتخاب شده و با کلیک راست روی کاربرگ، وارد عمل می شوند.

Private Sub Worksheet_BeforeRightClick(ByVal _
  Target As Range, Cancel As Boolean)
    Application.ScreenUpdating = False
    ActiveWindow.FreezePanes = False
    ActiveWindow.Split = False
    Application.EnableEvents = False
    Application.Goto Cells(1, 1), scroll:=True
    With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
    End With
    ActiveWindow.FreezePanes = True
    Application.Goto Cells(Target.Row - 1, _
      Target.Column), scroll:=True
    Application.EnableEvents = True
    On Error Resume Next        MUST reenable events
    Application.EnableEvents = False
    ActiveCell.Offset(-1, 1 - Target.Column).Select
     so the right click menu doesnt popup
     only if this is the second header row.
    Cancel = True 
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Cells(Target.Row, 1).Value <> "title2" Then Exit Sub
    ActiveWindow.FreezePanes = False
    ActiveWindow.Split = False
    Application.Goto Cells(Target.Row, 1), scroll:=True
    With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
    End With
    ActiveWindow.FreezePanes = True
    On Error Resume Next        MUST reenable events
    Application.EnableEvents = False
    ActiveCell.Offset(1, 1 - Target.Column).Select
    Application.EnableEvents = True
End Sub

کنترل کننده رویداد Worksheet_SelectionChange زمانی که مکان نمای سلول فعال شما به آن خط برخورد می کند، به طور خودکار تقسیم ثابت را به زیر ردیف دوم سرفصل ها منتقل می کند. این خط در دستور If شناسایی می شود که بررسی می کند آیا اولین سلول در ردیف حاوی متن "title2" است یا خیر. (بدیهی است که این باید تغییر کند تا نشان دهد که واقعاً در آن سلول اول چه خواهد بود.)

کنترل کننده رویداد Worksheet_BeforeRightClick تقسیم بندی ثابت شده را به مجموعه اول سرفصل ها برمی گرداند اما سلول فعال را در ردیف بالای مجموعه دوم سرفصل ها ترک می کند.

باید بدانید که هر دو راه حل ماکرو ارائه شده در این نکته فرض می کنند که شما واقعاً در صفحه کار پیمایش می کنید و سلول انتخاب شده را در حین حرکت تغییر می دهید. (به عبارت دیگر، برای انجام پیمایش خود، کلید پیکان رو به پایین را فشار می دهید.) اگر به سادگی با استفاده از نوار اسکرول عمودی، آنچه را که در کاربرگ نمایش داده می شود تغییر می دهید، سرفصل های ثابت تغییر نمی کنند زیرا سلول انتخاب شده را تغییر نمی دهید. و کنترل کننده های رویداد هرگز فعال نمی شوند.

ایجاد یک راه حل گسترده تر خارج از محدوده این نکته است زیرا مستلزم ارتباط با سیستم عامل واقعی است. با این حال، اگر شما علاقه مند به رفتن به این مسیر هستید، یک مکان شروع خوب ممکن است این صفحه در وب سایت Chip Pearsons باشد:

http://www.cpearson.com/excel/DetectScroll.htm
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

141 نفر آنلاین
0 عضو و 141 مهمان در سایت حاضرند
بازدید امروز: 21929
بازدید دیروز: 22514
بازدید کل: 15169130
...