Jon تعجب می کند که آیا تابعی معادل =ROW() یا =COLUMN() برای کاربرگ ها وجود دارد. او نیاز دارد (مثلاً) به برگه چهارم یک کتاب کار ارجاع دهد، اما نمی تواند از نام کاربرگ مطمئن باشد.
بسته به کاری که باید انجام دهید، چند راه برای حل این مشکل وجود دارد. اگر با یک کاربرگ کار میکنید که قبلاً ذخیره شده است، فرمول زیر نام کاربرگ Sheet4 را در اختیار شما قرار میدهد:
=MID(CELL("filename",Sheet4!A1),FIND("]",CELL(
"filename",Sheet4!A1))+1,LEN(CELL("filename",
Sheet4!A1)))
باید توجه داشته باشید که دو فرض در این فرمول وجود دارد. ابتدا (و مهمتر از همه) فرض می شود که نام اولیه کاربرگ را می دانید. در این مورد، نام اولیه Sheet4 است. پس از ایجاد فرمول، تغییرات بعدی در نام کاربرگ به طور خودکار در فرمول منعکس می شود. فرض دوم این است که کتاب کاری که در آن کار می کنید ذخیره شده است. اگر اینطور نبود، فرمول تا زمانی که کتاب کار ذخیره و دوباره محاسبه شود، یک خطا برمیگرداند.
یک رویکرد متفاوت استفاده از یک تابع تعریف شده توسط کاربر است. در مدل شیء VBA، تمام کاربرگهای یک کتاب کار در مجموعه Sheets قرار دارند. اینها به نوبه خود نمایه می شوند. بنابراین، می توانید یک مقدار شاخص را به تابع ارسال کنید و نام کاربرگ را در شماره فهرست مجموعه ها برگردانید.
Function TabName(lSNum As Long) As String
If lSNum > 0 And lSNum
به عنوان مثال، اگر می خواهید نام کاربرگ چهارم مجموعه را بدانید، می توانید از موارد زیر در کاربرگ خود استفاده کنید:
=TabName(4)
این تابع حتی در کتاب کاری که ذخیره نشده است به خوبی کار خواهد کرد. همچنین نام کاربرگ مناسب را برمی گرداند حتی اگر کاربرگ ها تغییر نام داده یا جابجا شوند.