دیوید از خود می پرسد که آیا راهی برای تغییر ارجاعات سلولی در ماکرو در هنگام افزودن یا حذف ردیف ها وجود دارد، مشابه روشی که یک فرمول به چنین تغییراتی پاسخ می دهد؟
هنگامی که شما به یک سلول در یک ماکرو ارجاع می دهید، مانند استفاده از Range ("B6")، سپس VBA آن مرجع را مطلق تلقی می کند، به این معنی که تغییر نمی کند. حتی اگر سلول هایی را اضافه یا حذف کنید که بر محل قرارگیری اطلاعات موجود در B6 تأثیر می گذارند، مرجع ماکرو ثابت می ماند.
راه حل این است که از ارجاع مستقیم به سلول ها در ماکروهای خود استفاده نکنید. در عوض، به محدوده های نامگذاری شده تکیه کنید. در اکسل، یک نام برای سلول B6 تعریف کنید (مانند "MyData")، و سپس از آن نام در مرجع استفاده کنید، مانند محدوده ("MyData"). این رویکرد به این دلیل کار می کند که VBA نام را جستجو می کند تا مشخص کند به کدام سلول ارجاع داده می شود، و اکسل مطمئن می شود که منابع محدوده نام گذاری شده هنگام افزودن یا حذف سلول ها به روز باقی می مانند.