۱۲ روش طلایی انتخاب محدوده ها توسط کد نویسی VBA در اکسل
موضوعی که امروز می خواهیم راجع به آن با هم صحبت کنیم نحوه انتخاب محدوده ها توسط کد نویسی VBA است .
حتما می دانید که هدف از برنامه نویسی VBA در نرم افزاری مثل اکسل این است که ما از طریق محیط کد نویسی و با استفاده از کدهای VBA بتوانیم به بخش های مختلف نرم افزار اکسل دسترسی پیدا کنیم .
VBA به تمامی بخش های نرم افزار اکسل در حکم یک شی نگاه می کند.
حال این شی می تواند یک سلول باشد مجموعه ای از چند سلول باشد یک یا چند شیت کاری باشد و یا هر چیز دیگری که در نرم افزار اکسل وجود دارد می تواند در حکم یک شی برای زبان VBA باشد .
خود این کلمه شی اشاره به یکی از مفاهیم بسیار مهم و کاربردی در برنامه نویسی دارد که ما قبلا راجع به آن آموزش مجزایی را در سایت قرار دایم .
برای دسترسی به این مطلب می توانید از لینک زیر استفاده کنید .
مطلب مرتبط : آشنایی با مفهوم شی در برنامه نویسی VBA
ما در کد نویسی VBA می خواهیم قابلیتی را ایجاد کنیم که تمامی کارهایی را که نیاز است تا بصورت دستی انجام دهیم بطور خودکار توسط خود برنامه انجام شود .
مثلا فرض کنید که یک لیست بلند بالا شامل ۱۰۰۰ نفر از اسامی افراد را در اختیار ما قرار داده اند .
حالا می خواهیم کنترل کنیم که آیا در بین این اسامی نام های تکراری نیز وجود دارند یا خیر ؟
مطئنا ایده خوبی نیست که بخواهیم یک به یک این اسامی را خودمان کنترل کنیم تا اسامی تکراری را پیدا کنیم .
این کار را اگر نشدنی فرض نکنیم اما مطمئنا دردسر بزرگی را برای خود ایجاد کرده ایم .
اما در یک راه ساده تر ما می توانیم این کار را با استفاده کد نویسی در اختیار خود نرم افزار قرار دهیم تا به بهترین شکل ممکن و البته در کوتاهترین زمان این کار را برای ما انجام دهد .
ما مشابه این کار را در این مطلب تحت عنوان یافتن داده های تکراری در اکسل توسط کدهای VBA انجام دادیم .
پس نقطه شروع برای مدیریت اشیای موجود در اکسل این است که بتوانیم به نحوی با این اشیا در محیط برنامه نویسی خود دسترسی پیدا کنیم .
امروز می خواهیم راجع به نحوه دسترسی سلول ها در اکسل با همدیگر صحبت کنیم .
اینکه از چه راه یا راههایی می توانیم به یک سلول یا مجموعه ای از سلول ها دسترسی پیدا کنیم تا در مراحل بعدی بتوانیم تغییرات مورد نظر خود را در انها اعمال کنیم .
پس با این آموزش هم همراه من باشید .
نحوه انتخاب محدوده ها توسط کد نویسی
اجازه بدهید کار را از ساده ترین اشیا و با استفاده از ساده ترین مثال ها با هم شروع کنیم .
دسترسی به یک سلول از طریق کد نویسی
فرض کنید که یک فایل اکسل داریم .
می خواهیم هر گاه که این فایل اکسل ما باز می شود در سلول A2 از شیت کاری که در حال حاضر فعال است عبارت Softpluse را بصورت خودکار درج کنیم .
خوب برای این کار باید دو مرحله را پشت سر بگذاریم .
در قدم اول باید آدرس سلول مورد نظر را برای برنامه تعیین کنیم .
در قدم دوم هم که می توانیم عبارت مور نظر خود را در سلول مربوطه درج کنیم .
بنابراین مهم است که با نحوه آدرس دهی اشیا در محیط برنامه نویسی VBA کاملا آشنا شویم .
در اینجا می خواهیم با نحوه کار با محدوده ها در اکسل توسط زبان برنامه نویسی VBA بطور کامل آشنا شویم.
نحوه انتخاب یک سلول
برای انتخاب یک سلول از دو طریق می توانیم اقدام کنیم .
در روش اول می توانیم از کدی مانند کد زیر استفاده کنیم .
Range("A2").Select
در روش دوم هم می توانیم از کدی مانند زیر استفاده کنیم.
Cells(2, 1).Select
متد Cells دارای دو آرگومان است در آرگومان اول شماره ردیف و در آرگومان دوم شماره ستون مربوط به سلول مورد نظر را وارد می کنیم .
در روش سوم هم می توانیم نام سلول مورد نظر را بصورت مستقیم وارد کنیم
select.[A2]
در تمامی موارد بالا با اجرای هر کدام از کدهای مورد نظر سلول A2 برای ما به حالت انتخاب در می آید .
و خروجی هر سه کد بالا یکسان خواهد بود .
تا به اینجا ما در خصوص نحوه انتخاب یک سلول با هم صحبت کردیم .
اما در ادامه می خواهیم نحوه انتخاب یک محدوده از سلول ها را با هم مورد بررسی قرار دهیم .
انتخاب یک محدوده از سلول ها در اکسل
شما می توانید با استفاده از شی Range و دستور Select نسبت به انتخاب یکمحدوده از سلو ل ها اقدام کنید .
به کدهای زیر توجه کنید
Range("A1, C1, E1").Select
ما در اینجا سه سلول را به حالت انتخاب در آورده ایم .
توجه کنید که این سلول ها بصورت مجزا از هم قرار دارند و ما در اینجا همه آنها را با استفاده از علامت کاما از هم مجزا کرده ایم .
در حالتی دیگر می توانیم یک محدوده از سلول ها را انتخاب کنیم .
فرض کنید می خواهیم تمامی سلول های موجود بین محدوده سلول های A1 تا A10 را به حالت انتخاب در آوریم .
برای این منظور از کدهای زیر استفاده می کنیم.
Range("A1:A10").Select
حالا فرض کنید که می خواهیم دو یا چند محدوده از سلول ها را بطور مجزا انتخاب کنیم .
به کدهای زیر توجه کنید .
Range("A1:A10, B11:B18").Select
ما در اینجا دو محدوده از سلول ها را به حالت انتخاب در آورده ایم و برای جداسازی محدوده ها هم از علامت کاما استفاده می کنیم .
حالا اگر بخواهیم کل سلول های موجود در شیت کاری جاری ما به حالت انتخاب درآیند می توانیم از کد زیر استفاده کنیم .
Cells.Select
انتخاب یک سطر یا ستون خاص
اگر بخواهیم کل سلول های موجود در یک سطر را به حالت انتخاب در آوریم میتوانیم از کدی مانند کد زیر استفاده کنیم .
rows(2).select
دقت کنید که در اینجا برای تعیین اینکه کدام سطر را به حالت انتخاب در آوریم باید شماره آن سطر را در این کد درج کنیم .
و اگر که بخواهیم کل سلول های موجود در یک ستون خاص را به حالت انتخاب در آوریم می توانیم از کد زیر استفاده کنیم .
Column(2).select
در اینجا نیز باید شماره ستون مورد نظر را برای برنامه مشخص کنیم .
انتخاب اولین سلول خالی در یک ستون .
به تصویر زیر نگاه کنید .
در اینجا در ستون A و در محدوده سلول های A1 تا A8 ما اطلاعاتی را وارد کرده ایم .
حالا می خواهیم کاری کنیم که بطور خودکار اولین سلول بعد از این سلول ها را که در حال حاضر خالی است را انتخاب کنیم و مقداری را در آن درج کنیم .
برای این کار از کد زیر استفاده می کنیم .
Range("A1").End(xlDown).Select
ما در اینجا از متد Range .End استفاده می کنیم .
متد End چهار آرگومان را می گیرد .
این آرگومانها شامل Down-Left-Right و Up هستند .
در واقع با استفاده از این آرگومان ها تعیین می کنیم که برنامه در کدام جهت از محدوده حاضر حرکت کرده و آخرین سلول مورد نظر در این محدوده را برای ما به حالت انتخاب در آورد.
در حالتی مشابه اگر اطلاعات ما در یک ردیف قرار داشته باشند برای انتخاب آخرین سلول حاوی اطلاعات در این ردیف می توانیم از کد زیر استفاده کنیم .
Range("A1").End(xlToRight).Select
در اینجا ما سلول A1 را به عنوان نقطه آغاز حرکت تعیین و از برنامه می خواهیم که به سمت راست حرکت نموده و آخرین سلول حاوی اطلاعات را برای ما به حالت انتخاب درآورد .
اما هدف ما این است که در اولین سلول خالی بعد از سلول های حاوی اطلاعات مقداری را وارد کنیم .
برای این کار باید اول برنامه را به سمت آخرین سلول حاوی اطلاعات هدایت کنیم که این کار را با استفاده از متد Range .End انجام داده و آخرین سلول حاوی اطلاعات را در یک سطر و یا ستون پیدا کردیم .
حالا باید کاری کنیم که برنامه به اندازه یک سلول به جلو حرکت کند .
این سلول در واقع در حکم اولین سلول خالی خواهد بود که ما می توانیم در آن اطلاعات خود را وارد کنیم .
برای این کار یعنی حرکت به تعداد مورد نظر از سلول ها باید از متد Offset استفاده کنیم .
متد Offset خود دارای دو ورودی است .
ورودی اول از نوع عدد است و تعیین می کند که برنامه ما به اندازه چند سلول در ردیف ها حرکت کند .
ورودی دوم نیز عدددی است که مشخص می کند که برنامه به اندازه چند سلول در ردیف ها حرکت کند .
بعنوان مثال ما در اینجا می خواهیم به اندازه یک سلول در ستون A از آخرین سلولی که حاوی اطلاعات است به جلو برویم .
برای این منظور از کدهای زیر بصورت همزمان استفاده می کنیم .
Range("A1:A8").select Activecell.Offset(1,0).select
همانگونه که می بینید ما در خط اول از این کدها آخرین سلول حاوی اطلاعات را پیدا کرده و آن را به حالت انتخاب در می آوریم .
در قدم بعدی به برنامه می گوییم که از این سلول که به حالت انتخاب است در همان ستون به اندازه یک ردیف به سمت پایین حرکت کند.
حالا می توانیم در این سلول مقدار مورد نظر خود را وارد کنیم .
انتخاب ناحیه کاری فعال
منظور از ناحیه کاری فعال محدوده ای از سلول ها می باشد که در کنار هم و در مجاورت یک سلول قرار قرار دارند
بعنوان مثال اگر بخواهیم کلیه محدوده کاری موجود در اطراف سول A2 را در تصویر زیر انتخاب کنیم می توانیم از کد زیر استفاده کنیم
Range("A2").CurrentRegion.Select
ما در اینجا از متد Current region استفاده می کنیم .
توجه کنید که یک محدوده کاری هم شامل سلول های خالی و هم شامل سلول های حاوی اطلاعات خواهد بود .
انتخاب یک محدوده نام گذاری شده
همیشه به عنوان یک نکته کاربردی از کاربر خواسته می شود که محدوده هایی را که با انها سرو کار دارد را نام گذاری کند تا از این طریق بتواند بهتر به انها دسترسی ذاشته باشد .
حالا فرض کنیم ما محدوده سلول های بین A1 تا C10 خود را انتخاب و آنها را به نام mydata نام گذاری کرده ایم .
حالا اگر بخواهیم از داخل محیط کد نویسی به این محدوده دسترسی پیدا کنیم کافی است فقط نام محدوده مورد نظر را بصورت زیر درج کنیم .
Range("mydata").Select
انتخاب یک محدوده کاری در شیت های دیگر
ممکن است نیاز پیدا کنید که از داخل یک شیت کاری که در حال حاضر باز بوده و مشغول فعالیت در آن هستید بخواهید به یک یا چند سلول از شیت دیگر دسترسی پیدا کنید .
فرض کنید که ما الان در شیت کاری ۱ هستیم .
حالا می خواهیم از طریق کد نویسی شیت کاری ۲ را باز کرده به محدوده سلول های موجود در محدوده A1 تا C10 دسترسی پیدا کرده و آنها را به حالت انتخاب درآوریم .
Worksheets("Sheet2").Activate Range("A1:C10").Select
ما در اینجا در خط اول ابتدا شیت ۲ را باز می کنیم .
در خط دوم هم محدوده مورد نظر را انتخاب می کنیم .
کار با محدوده های انتخاب شده
آنچه که تا به اینجا به آن پرداختیم نحوه انتخاب محدوده های مورد نظر از سلول ها بود .
در ادامه باید بتوانیم تغییرات مورد نظر را در این محدوده ها اعمال کنیم .
بعنوان مثال فرض کنید می خواهیم محدوده سلول های A1 تا C10 را انتخاب نموده و تغییرات زیر را در آنها اعمال کنیم
۱- فونت B Nazain را برای نوشته های این محدوده ها انتخاب کنیم.
۲- رنگ فونت نوشته ها را به رنگ آبی در آوریم .
۳- رنگ پس زمینه سلول ها در این محدوده را به رنگ زرد درآوریم .
۴- به فونت نوشته ها در این محدوده از سلول ها فرمت توپر یا همان Bold را اعمال کنیم .
برای انجام مجموعه این کارها می توانیم از کدهای زیر استفاده کنیم .
()Sub test Range("A1:C1").Select "Selection.Font.Name = "B nazanin Selection.Forecolor= vbBlue Selection.Font.Bold = True Selection.Interior.Color = vbyellow End Sub
این ها نمونه ای از کارهایی است که ما می توانیم با استفاده از برنامه نویسی VBA در محیط اکسل انجام داده و با استفاده از آنها به محدوده ها و سلول های کاری در اکسل دسترسی پیدا کرده و با استفاه از آنها به مدیریت اطلاعات در اکسل پرداخت .
در اینجا مبحث انتخاب محدوده ها توسط کد نویسی VBA را به اتمام می بریم .
البته مطمئنا اینها تمام مباحث و مطالبی نیست که در برگیرنده تمامی مواردی باشد که با استفاده از آنها می توانیم به انتخاب محدوده ها توسط کد نویسی VBA و کار با محدوده ها در اکسل بپردازیم .
در آینده باز هم مطالب بیشتری در این خصوص در سایت منتشر می کنیم .
در ضمن ما مطالب کاربردی و آموزشی در زمینه کار با نرم افزار اکسل را در قالب آموزش های چند دقیقه ای تهیه و در پیچ اینستاگرام مربوط به سایت سافت پلاس منتشر می کنیم .
مطالب زیر را حتما مطالعه کنید
ذخیره نمودارها با کدهای VBAبصورت تصویر+راهنمای گام به گام
لیست باکس ها در برنامه نویسی VBA ؛ تمام چیزی که باید بدانید .
۷ اشتباه در کدنویسی VBA که ممکن است شما هم مرتکب شوید ؟
توی این آموزش راجع به اشتباهاتی که ممکن است در برنامه نویسی VBA مرتکب آنها شوید صحبت می کنیم .
با این خطای Runtime Error 1004 در VBA چکار کنیم ؟
در این آموزش راجع به خطایی به اسم Run time error 1004 در برنامه نویسی وی بی ای با هم صحبت می کنیم .
چطور با کدهای VBA اطلاعات را از اکسس به ورد بفرستیم؟
کلمه کلیدی set و کاربردهای آن در برنامه نویسی VBA
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام خسته نباشید من در اکسل میخوام محدوده شیت من رو کاربر نتونه جابه جا بشه که با scrollareaبه طور دائم نمیشه من چطوری میتونم کد نویس کنم