گاهی اوقات در یک ماکرو انتخاب سلول ها نسبت به سلولی که در حال حاضر انتخاب شده است مفید است. به عنوان مثال، فرض کنید می خواهید سه خانه اول ردیف فعلی را انتخاب کنید. با استفاده از کد VBA زیر می توانید این کار را انجام دهید:
Range(Cells(Selection.Row, 1), Cells(Selection.Row, 3)).Select
ویژگی Cells یک شی را برمی گرداند که نشان دهنده یک سطر و ستون خاص (سلول جداگانه) از یک کاربرگ است. در این کاربرد، سلول ها دو بار برای تعیین محدوده خاصی از سلول ها استفاده می شود. نمونه اول اولین سلول از ردیف فعلی را برمی گرداند، در حالی که نمونه دوم سلول سوم ردیف فعلی را برمی گرداند. بنابراین، محدوده به سلول های اول تا سوم ردیف فعلی تبدیل می شود.
به جای استفاده از ویژگی Cells برای تعیین یک مکان، می توانید از ویژگی Offset برای انجام بسیاری از کارهای مشابه استفاده کنید. کد زیر را در نظر بگیرید:
Range(ActiveCell.Offset(-3, 5), ActiveCell.Offset(0, 10)).Select
این از ویژگی Offset شی ActiveCell برای تعیین محدوده نسبت به سلول فعلی استفاده می کند. ویژگی Offset یک آرگومان می گیرد که نشان دهنده سطر و ستون افست است. یک مقدار منفی نشان دهنده بالا (برای ردیف) و سمت چپ (برای ستون) است. مقدار مثبت پایین (برای ردیف) و راست (برای ستون) است. همچنین می توانید از مقدار 0 استفاده کنید که نشان دهنده سطر یا ستون فعلی است.