خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آموزش برنامه نویسی اکسل : سلولها و محدوده ها (Cells and Ranges)

آموزش برنامه نویسی اکسل : سلولها و محدوده ها (Cells and Ranges)
نویسنده : امیر انصاری
شیء Range شاید پر کاربردترین شیء در VBA باشد. یک Range می تواند یک سلول تنها و یا یک محدوده از سلولها که در هر ناحیه ای گسترده شده است، باشد. در آن صورت یک شیء Range می تواند یک سلول و یا بلوکی از سلولها باشد که در داخل یک شیء برگه (Worksheet) قرار گرفته است. اگرچه یک شیء Range می تواند یک اجتماع از چندین بلوک غیر همجوار از سلولها نیز باشد، این همیشه موردی است که یک شیء Range در VBA شامل یک برگه باشد. چنین چیزی وجود ندارد که یک شیء Range شامل سلولهایی در برگه های مختلف باشد.

سیستم یکپارچۀ سازمانی راهکار



از دیدگاه VBA یک سلول تنها نیز خودش یک Range است، و شیء ActiveCell نام شیئی در VBA است که تک سلول فعال در برگۀ فعال را شامل می شود. شیئی با نام ActiveRange نداریم، اما برای شناسایی Range های خاص، راههای زیادی وجود دارد که یکی از رایج ترین آنها شیء Selection می باشد.

اگر شما هر محدوده ای (Range) از سلولها را انتخاب کنید و خط کد زیر را اجرا کنید، تمامی سلولها در آن محدودۀ انتخاب شده فوراً متن Hello را در خود خواهند داشت:

Selection.Value = “Hello”

ممکن است به دانستن این موضوع علاقمند باشید که محدوده های دارای نام (named ranges) یک بازی جوانمردانه در VBA هستند که مانند هر محدوده (Range) دیگری می توانند برای اشاره کردن و یا دستکاری محدوده ها مورد استفاده قرار بگیرند. در واقع یک مجموعه از نامها برای محدوده های دارای نام (named ranges) وجود دارد.

به عنوان یک مثال، فرض کنید که قبلاً یک محدوده (Range) را با نام myRange نامگذاری کرده اید. این خط از کد می تواند کلمۀ Hello را در تمامی سلولهای این محدوده (Range) قرار دهد:

Range(“myRange”).Value = “Hello”

همانطور که دیدید، برای کار کردن با یک محدوده (Range) نیازی به انتخاب کردن آن محدوده ندارید. برای انجام بیشتر عملیات ها بر روی سلولها (cells) یا محدوده ها (ranges)، شما می توانید به آن محدوده و برگۀ پدرش (parent worksheet) اشاره کنید. خط کد زیر می تواند در هر برگه ای اجرا شود و نتیجه اش این می شود که قالب بندی bold را بر روی محدوده ای از سلولها در Sheet1 انجام می دهد.

Worksheets(“Sheet1”).Range(“A1:D25”).Font.Bold = True

زمانهایی وجود دارند که شما قصد دارید تا به جای اشاره به یک محدوده خاص از سلولها، به همۀ سلولهای موجود در یک برگه اشاره کنید. برای مثال، فرض کنید در بخشی از ماکرویتان می خواهید محتویات کلیه سلولهای موجود در یک برگه را خالی کنید. از آفیس نسخه 2007 به بعد خالی کردن محتویات کلیه سلولهای یک برگه می تواند با کد زیر انجام شود:
Range(“A1:XFD1048576”).ClearContents

با این حال، اگر نسخه آفیس شما پایینتر از نسخه 2007 باشد، این عملیات با کد زیر می تواند صورت پذیرد:
Range(“A1:IV65536”).ClearContents

خوشبختانه، شما می توانید با استفاده از شیء Cells مشابه چیزی که در مثال زیر می بینید، از خطاها و سردر گمی ها جلوگیری کنید. کد زیر در تمامی نسخه های آفیس تا این لحظه (آفیس 2016) می تواند مورد استفاده قرار بگیرد.
Cells.ClearContents

شما می توانید با استفاده از شیء Cells برخی کارهای مفید بر روی کل برگه انجام بدهید. فرض کنید شما Sheet1 را به عنوان الگو تنظیم کرده اید، که محدوده هایی قالب بندی شده (formatted ranges)، برچسب ها، مقادیر، فرمول ها و ... در آن تنظیم شده اند. و قصد دارید تا Sheet2 نیز مشابه Sheet1 مستقر شود. خط کد زیر کلیه سلولهای Sheet1 را copy کرده و در Sheet2 آنها را paste می کند.
Worksheets(“Sheet1”).Cells.Copy Worksheets(“Sheet2”).Cells

سلول های خاص (SpecialCells)


یک نوع جالب از شیء Range گروه سلول های خاص (SpecialCells) در اکسل می باشد. اگر شما هنوز سلول های خاص (SpecialCells) را امتحان نکرده اید، دکمۀ F5 را بفشارید تا کادر محاوره ای Go To نمایان شود. بر روی دکمۀ Special کلیک کنید و بیش از دو جین طبقه بندی از سلول های خاص (SpecialCells) را خواهید دید.

سلولهایی در برگۀ شما که دارای توضیحات (comments) باشند توسط اکسل به عنوان سلول های خاص (SpecialCells) در نظر گرفته می شوند. به همین ترتیب سلولهایی که محتوی اعتبار سنجی داده ها هستند، یا سلولهای دارای فرمول، یا سلولهای دارای ثابت ها مانند متن و داده ای که شما به صورت دستی وارد می نمایید. با ترکیب سلول های خاص (SpecialCells)، امکانات شما برای شناسایی انواع Range ها بر اساس انواع معیارها، بسیار زیاد می شود.

فرض کنید در محدودۀ A1:A10 شما تعدادی سلول دارید که شامل فرمول هستند، تعدادی سلول دارید که شامل اعدادی هستند که شما به صورت دستی وارد نموده اید، و برخی سلولها نیز شامل هیچ چیزی نیستند. اگر شما بخواهید تمامی سلولهایی را در محدوده A1:A10 انتخاب کنید که شامل فرمول هستند و بقیه سلولهای دیگر این محدوده در انتخاب شما نباشند، ماکرو زیر می تواند به شما کمک کند:

Sub FindFormulas()
Range(“A1:A10”).SpecialCells(xlCellTypeFormulas).Select
End Sub


آموزش قبلی : آموزش برنامه نویسی اکسل : برگه ها (Worksheets)

آموزش بعدی : آموزش برنامه نویسی اکسل : تصمیم گیری با VBA



نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.