احتمالاً میدانید که میتوانید با دوبار کلیک کردن روی برگه و ارائه یک نام جدید، نام یک برگه کاربرگ را تغییر دهید. با این حال، اگر بخواهید آن را به صورت پویا انجام دهید، چه؟ اگر بخواهید مقدار سلول A1 به طور خودکار به عنوان نام برگه ظاهر شود، چه؟
متأسفانه، اکسل یک تابع ذاتی برای رسیدگی به این نوع کارها ارائه نمی دهد. ایجاد چنین عملکردی با استفاده از یک ماکرو کار نسبتاً ساده ای است که این کار را برای شما انجام می دهد. به عنوان مثال، ماکرو زیر نام برگه را به محتوای A1 تغییر می دهد:
Sub myTabName()
ActiveSheet.Name = ActiveSheet.Range("A1")
End Sub
چندین مورد مهم در مورد این ماکرو وجود دارد. اول از همه، بررسی خطا وجود ندارد. این بدان معنی است که اگر A1 حاوی مقداری باشد که برای نام یک برگه غیرقانونی است، ماکرو یک خطا ایجاد می کند. دوم اینکه ماکرو باید به صورت دستی اجرا شود.
اگر ماکرو قویتری میخواهید که خطاها را بررسی میکند و به طور خودکار اجرا میشود، چه؟ نتیجه کمی طولانی تر است، اما هنوز خیلی پیچیده نیست:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Set Target = Range("A1")
If Target = "" Then Exit Sub
On Error GoTo Badname
ActiveSheet.Name = Left(Target, 31)
Exit Sub
Badname:
MsgBox "Please revise the entry in A1." & Chr(13) _
& "It appears to contain one or more " & Chr(13) _
& "illegal characters." & Chr(13)
Range("A1").Activate
End Sub
برای راه اندازی این ماکرو مراحل زیر را دنبال کنید:
- یک کتاب کار جدید که فقط یک کاربرگ در آن دارد باز کنید.
- روی برگه کاربرگ راست کلیک کرده و View Code را از منوی Context انتخاب کنید. اکسل ویرایشگر VBA را نمایش می دهد.
- ماکرو فوق را در پنجره کد قرار دهید (یا تایپ کنید).
- ویرایشگر VBA را ببندید.
- پوشه XLStart را در سیستم خود پیدا کنید. (از قابلیت های جستجوی ویندوز برای مکان یابی پوشه استفاده کنید.)
- کتاب کار را با استفاده از نام Book.xltm در فهرست XLStart به عنوان یک الگوی ماکرو فعال اکسل ذخیره کنید. این باعث می شود که الگو برای هر کتاب کاری جدیدی که ایجاد می کنید به الگوی شما تبدیل شود.
- دوباره کتاب کار را به عنوان یک الگوی ماکرو فعال در همان فهرست، این بار با استفاده از نام Sheet.xltm ذخیره کنید. این باعث می شود که الگو به الگوی هر کاربرگ جدیدی که در کتاب کار وارد می کنید تبدیل شود.
- اکسل را ببندید و مجددا راه اندازی کنید.
اکنون، هر زمان که مقدار را در سلول A1 تغییر دهید، برگه کاربرگ نیز به روز می شود.
برای استفاده از این نکته یک هشدار وجود دارد: اگر مقدار در سلول A1 یک تاریخ است و میخواهید برگه کاربرگ حاوی آن تاریخ باشد، ممکن است آنچه را که انتظار دارید دریافت نکنید. دلیل ساده است: اکسل تاریخ ها را به صورت داخلی به عنوان شماره سریال ذخیره می کند، و این چیزی است که به برگه کاربرگ اختصاص داده می شود، نه یک تاریخ فرمت شده. اگر با تاریخ ها کار می کنید، باید آنچه را که واقعاً به نام برگه اختصاص داده شده است تغییر دهید:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Set Target = Range("A1")
If Target = "" Then Exit Sub
On Error GoTo Badname
ActiveSheet.Name = Format(Target, "mmm-dd-yy")
Exit Sub
Badname:
MsgBox "Please revise the entry in A1." & Chr(13) _
& "It appears to contain one or more " & Chr(13) _
& "illegal characters." & Chr(13)
Range("A1").Activate
End Sub
توجه داشته باشید که تنها تغییر در اینجا چیزی است که به ویژگی Name کاربرگ اختصاص داده شده است - این یک تاریخ قالب بندی شده است. در صورت تمایل می توانید قالب تاریخ استفاده شده در ماکرو را تغییر دهید. با این حال، نباید قالبی را انتخاب کنید که از اسلش استفاده می کند، زیرا در نام کاربرگ غیرقانونی است.