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

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

ساده ترین راه برای انجام این کار این است که مطمئن شوید عنوان در سلول A1 است. از آنجایی که یک ستون و دو سطر ثابت شده اید، وقتی به سلول سمت راست A1 اسکرول می کنید، که حاوی عنوان است، همیشه روی صفحه قابل مشاهده خواهد بود. (این فقط در صورتی به طور رضایت بخش کار می کند که کل عنوان در سلول A1 قرار گیرد، بدون اینکه "در سلول B1" یا فراتر از آن "ریخته شود".)

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

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

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    Me.Shapes("TitleTextBox").Left = ActiveWindow.VisibleRange.Left
End Sub

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

زمانی که این ماکرو شروع به کار نمی کند، زمانی است که با استفاده از نوار اسکرول افقی در پایین صفحه به چپ و راست پیمایش می کنید. هیچ "رویداد پیمایشی" وجود ندارد که به طور خودکار هنگام استفاده از نوارهای پیمایش فعال شود. تا زمانی که انتخابی در جایی در محدوده قابل مشاهده جدید انجام نشود و در نتیجه رویداد SelectionChange فعال شود، مکان جعبه متن منتقل نخواهد شد.

تنها راه حل برای این محدودیت استفاده از قابلیت های تایمر ویژوال بیسیک برای به روز رسانی متناوب به صورت دوره ای است. کد زیر هر ثانیه این کار را انجام می دهد، اما در صورت تمایل می توانید آن را طوری تنظیم کنید که کمتر اجرا شود. این کد به یک ماژول VBA معمولی اضافه می شود:

Sub UpdateTB()
    If ActiveSheet.Name = "Sheet1" Then
        ActiveSheet.Shapes("TitleTextBox").Left = _
          ActiveWindow.VisibleRange.Left
    End If
    Application.OnTime Now + TimeSerial(0, 0, 1), "UpdateTB"
End Sub

و این به شیء ورک بوک اضافه می شود تا زمانی که ورک بوک برای اولین بار باز می شود تایمر شروع شود:

Private Sub Workbook_Open()
    UpdateTB
End Sub

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

علاوه بر هرگونه کندی که توسط کد در حال اجرا ایجاد می شود، یک «معضل» اضافی برای هر یک از تکنیک های مبتنی بر کلان وجود دارد: هر بار که کد اجرا می شود، «لغو پشته» را پاک می کند. این بدان معنی است که در صورت نیاز نمی توانید تغییراتی را که در ورک بوک ایجاد می کنید، "لغو" کنید.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

88 نفر آنلاین
0 عضو و 88 مهمان در سایت حاضرند
بازدید امروز: 6769
بازدید دیروز: 14408
بازدید کل: 15455689
...