هنگام استفاده از ماکروها برای دسترسی یا تغییر داده ها در کاربرگ ها، اغلب به محدوده ها تکیه می کنید. انجام این کار نیاز به انتخاب واقعی سلول ها در ماکرو را از بین می برد. با این حال، ممکن است بخواهید (به هر دلیلی) سلول هایی را که می خواهید با آنها کار کنید انتخاب کنید. اگر سلولی که می خواهید انتخاب کنید در یک ورک بوک دیگری باشد، کار کمی سخت تر می شود. به عنوان مثال، دو خط کد زیر را در نظر بگیرید:
Sub CellSelect1()
Workbooks("pwd.xls").Sheets("Sheet3").Select
ActiveSheet.Range("A18").Select
End Sub
شاید فکر کنید که این ماکرو Sheet3!A18 را در ورک بوک pwd.xls انتخاب می کند. این کار با برخی احتیاط ها انجام می شود. اگر بیش از یک ورک بوک باز دارید، اگر pwd.xls ورک بوک فعال فعلی نباشد، این ماکرو با خطا مواجه می شود. این اتفاق می افتد حتی اگر pwd.xls از قبل باز باشد، اما انتخاب نشده باشد.
همین رفتار حتی زمانی که کد انتخاب را به یک خط فشرده می کنید وجود دارد:
Sub CellSelect2()
Workbooks("pwd.xls").Sheets("Sheet3").Range("A18").Select
End Sub
شما همچنان خطا را دریافت می کنید، به جز زمانی که pwd.xls ورک بوک فعال باشد. راه حل این است که به طور کامل نحوه انجام پرش را تغییر دهید. به جای استفاده از روش Select، از متد Goto استفاده کنید و یک آدرس هدف برای متد مشخص کنید:
Sub CellSelect3()
Application.Goto _
Reference:=Workbooks("pwd.xls").Sheets("Sheet3").[A18]
End Sub
این کد فقط در صورتی کار می کند که pwd.xls از قبل باز باشد، اما نیازی نیست که ورک بوک فعال فعلی باشد. اگر می خواهید ورک بوک هدف به گونه ای پیمایش شود که سلول مشخص شده در گوشه سمت چپ بالای چیزی که مشاهده می کنید، باشد، می توانید مشخصه Scroll را مطابق با تصویر True تعیین کنید:
Sub CellSelect4()
Application.Goto _
Reference:=Workbooks("pwd.xls").Sheets("Sheet3").[A18] _
Scroll:=True
End Sub