ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
25 visibility
موضوع: آفیس توسط:

جان یک ماکرو دارد که پردازش هایی را روی کاربرگ های مختلف در یک کتاب کار انجام می دهد. او می خواهد، در ابتدای ماکرو، محدوده سلول ها (یا تک سلولی) را که کاربر انتخاب کرده ذخیره کند. او برای تعیین این مورد از ActiveCell.Address استفاده می کند. سپس، در پایان ماکرو، می‌خواهد با همان محدوده انتخابی کاربر که در ابتدا انتخاب کرده بود، به کاربر بازگردد.

مشکل این است که ماکرو را می‌توان در یک کاربرگ کاملاً متفاوت از جایی که کاربر شروع کرده به پایان رساند، و ActiveCell.Address فقط یک آدرس سلول را می‌دهد، نه نام کاربرگ و قطعاً محدوده‌ای را نمی‌دهد. جان در مورد بهترین راه برای ذخیره چیزهایی که نیاز دارد می‌پرسد تا بتواند در انتهای ماکرو به مکان اصلی کاربران بازگردد.

برای بهترین شانس برای بازگشت کسی به جایی که شروع کرده است، سه عنصر وجود دارد: کتاب کار، کاربرگ و سلول. در واقع، این آخرین عنصر (سلول) ممکن است کمی ساده باشد، زیرا کاربر همیشه یک سلول را انتخاب می کند (این همان چیزی است که توسط ActiveCell.Address برگردانده می شود)، اما ممکن است علاوه بر این یک محدوده انتخاب شده باشد.

در اینجا چگونه می توانید هر چهار مورد را دریافت کنید:

Dim rngOrigSelection As Range
Dim rngOrigCell As Range
Dim sOrigWS As String
Dim sOrigWB As String

Set rngOrigSelection = Selection
Set rngOrigCell = ActiveCell
sOrigWS = ActiveSheet.Name
sOrigWB = ActiveWorkbook.Name

هنگامی که می خواهید بعداً کاربر را به جایی که بود برگردانید، می توانید از این نوع کد استفاده کنید:

Workbooks(sOrigWB).Activate
Sheets(sOrigWS).Select
rngOrigSelection.Select
rngOrigCell.Activate

البته، اکسل همیشه راه های متعددی دارد که می توانید هر وظیفه ای را انجام دهید. در این مورد، می توانید کد خود را تنها با به خاطر سپردن سلول فعال و محدوده انتخاب شده کوتاه کنید:

Dim rngOrigSelection As Range
Dim rngOrigCell As Range

Set rngOrigSelection = Selection
Set rngOrigCell = ActiveCell

هنگامی که می خواهید کاربر را به مکان بازیابی کنید، به شی والد موجود در VBA تکیه می کنید:

rngOrigSelection.Parent.Parent.Activate
rngOrigSelection.Parent.Select
rngOrigSelection.Select
rngOrigCell.Activate

شی والد محدوده انتخابی که ذخیره کردید، کاربرگی است که آن محدوده در آن قرار دارد، و والد آن شی والد، کتاب کاری است که کاربرگ در آن قرار دارد.

روش دیگر این است که به سادگی در ماکرو خود، یک محدوده با نام ایجاد کنید که به هر چیزی که کاربر انتخاب کرده است اشاره دارد:

ActiveWorkbook.Names.Add Name:="MyOrigPlace", RefersTo:=Selection

بعد از اینکه پردازش خود را انجام دادید، وقتی آماده بازگشت به آنچه کاربر انتخاب کرده بودید، از این کد استفاده می کنید:

Application.Goto Reference:="MyOrigPlace"
ActiveWorkbook.Names("MyOrigPlace").Delete

خط اول به انتخاب باز می گردد و خط دوم محدوده نامگذاری شده را حذف می کند. تنها اشکال این روش این است که سلول فعال حفظ نمی شود. این کد فرض می‌کند که می‌خواهید پس از اتمام، سلول بالا سمت چپ در محدوده، سلول فعال باشد. همچنین باید توجه داشته باشید که اگر پردازش شما سلول‌هایی را که محدوده نام‌گذاری شده را تشکیل می‌دهند حذف کند، ممکن است کد به درستی کار نکند - اکسل نمی‌تواند به جایی برود که دیگر وجود ندارد.

البته، اگر ماکرو خود را به درستی کدنویسی کنید، ممکن است اصلاً مجبور نباشید مکانی را به خاطر بسپارید. در حالی که VBA به شما این امکان را می دهد که "حرکت کنید" و قسمت های مختلف برگه ها و کتاب کار خود را انتخاب کنید، در بیشتر موارد این کار ضروری نیست. به عنوان مثال، می‌توانید به سادگی با محدوده‌های مختلف کار کنید و سپس کار خود را روی آن محدوده‌ها انجام دهید، بدون اینکه هرگز انتخاب یا سلول فعال فعلی را تغییر دهید. در واقع، VBA به شما این امکان را می‌دهد که بدون نیاز به انتخاب سلول‌ها، تغییر، قالب‌بندی مجدد، مرتب‌سازی، حذف و تقریباً هر کاری را که تصور می‌کنید روی سلول‌ها انجام دهید.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 31 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 28 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 36 visibility

23.7k سوال

9.0k پاسخ

614 دیدگاه

11.2k کاربر

235 نفر آنلاین
0 عضو و 235 مهمان در سایت حاضرند
بازدید امروز: 12968
بازدید دیروز: 17853
بازدید کل: 20325152
...