ماکرو نویسی در ویژوال بیسیک و استفاده از قابلیت های اکسل در کد نویسی ها ما را مجاب به استفاده از Cells و Range مینماید، در مقالات قبلی با نحوه به کار بردن آن ها برای اشاره به سلول های اکسل آشنا شدیم، در اینجا به کاربرد Union و Range در VBA برای اشاره به چندین سلول اکسل پرداخته میشود.
اشاره همزمان به چند محدوده از اکسل در کدهای ویژوال بیسیک
ممکن است شما چندین محدوده در فایل اکسل خود داشته باشید که در حال نوشتن برنامه برای آنها هستید، به عنوان مثال این محدوده ها میتوانند یک سری سلول مشخص در چند Sheet از فایل اکسل شما باشند.
در بسیاری موارد شما نیاز دارید یکی از خواص (Property) تمام این محدوده ها را تغییر دهید، مثلاً در صورت حاصل شدن یک نتیجه ی مورد نظر برای آنالیز خود قصد دارید چند محدوده از فایل اکسل خود را که منجر به ایجاد آن نتیجه شده اند را با Bold کردن محتوای سلول های آنها مشخص کنید. برای اشاره همزمان به چند محدوده از اکسل در کدهای ویژوال بیسیک دو راه وجود دارد، اول استفاده از Range و دوم یکی کردن محدوده ها با استفاده از روش Union.
استفاده از Range برای اشاره به چندین محدوده به صورت همزمان
برای اشاره به چندین محدوده از اکسل در کدهای ویژوال بیسیک و به منظور تغییر خواص و مقادار آنها میتوان از Range استفاده نمود، کدهای زیر محدوده هایی از Sheet1 را انتخاب نموده و محتوای سلول های آن ها را پاک میکنند، تعداد محدوده ها و اندازه ی آنها بنا به نیاز کدنویس قابل تغییر هستند. در صورتی که محدوده های شما از Sheet های متفاوتی بودند نمیتوانید از این روش استفاده نمایید.
1 2 3 |
Sub ClearRanges() Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18").ClearContents End Sub |
استفاده از Union برای یکپارچه کردن چند محدوده ی اکسل در VBA
با استفاده از روش Union میتوانید چندین محدوده از اکسل خود را یکپارچه نمایید و آنها را به عنوان یک محدوده تعریف کنید، در این صورت برای اشاره به آنها تنها نام اتحاد آنها را مورد استفاده قرار میدهید. کدهای زیر متغیر MultiRange را به صورت مجموعه ی محدوده های Range1 و Range2 تعریف کرده و فونت سلول های آن ها را Bold میکند.
1 2 3 4 5 6 7 8 9 |
Sub ExcelPro_Test() Dim Range1 As Range Dim Range2 As Range Dim MultiRange As Range Set Range1 = Sheets("Sheet1").Range("A1:C5") Set Range2 = Sheets("Sheet1").Range("E8:H13") Set MultiRange = Union(Range1, Range2) MultiRange.Font.Bold = True End Sub |
برای یکپارچه کردن سطر ها و ستون ها هم میتوان از روس Union استفاده نمود، کد زیر فونت سلول های چند ریدف را همزمان Bold میکند.
1 2 3 4 5 6 7 |
Sub ExcelPro_Test () Dim MultiRange As Range Worksheets("Sheet1").Activate ‘The Sheet Which Contains Subjected Rows/Columns Should be activated Set MultiRange = Union(Rows(1), Rows(3), Rows(5)) MultiRange.Font.Bold = True End Sub |
بسیار کامل و دقیق توضیح دادید. ممنون از سایت خوبتون.
خواهش میکنم مهندس، باعث افتخارم که مطالب سایتم از نظر شما مفید باشه
مهندس قدیمی بابت انتشار مطالب مفیدی که در سایت و کتابتون قرار دادید کمال تشکر رو دارم اما نقطه ضعفی که میشه گرفت این هست توی مطالبتان راجع به طراحی فرمها و تب ها مطلبی بیان نکردید یا لا اقل من ندیدم چنانچه فرصت دارید در این موضوع هم به انتشار مطالب بپردازید.
سلام، متشکرم، بله حتماً، در حال حاضر مطالب بسیار زیادی هست که متاسفانه به خاطر مشغله فراوان موفق به نگارش آنها نشدم، امیدوارم به زودی بتونم نوشتن رو شروع کنم، ممنون از توجه شما. موفق باشید.