مهمترین Object موجود در اکسل، سلولها میباشند که در این قسمت به توضیح نحوه آدرس دهی سلول ها در VBA میپردازیم.
یکی از کاربردیترین روشها در آدرس دهی سلولها استفاده از دستور Range میباشد که در زیر نحوه آدرسدهی با آن گفته میشود.
آدرس مورد نظر در Sheet فعال | کد |
انتخاب سلول A1 | Range(“a1”).Select |
انتخاب سلول A1 و B4 و D9 | Range(“a1,b4,d9”).Select |
انتخاب ناحیه مربوط به سلول A1 تا B3 | Range(“a1:b3”).Select |
انتخاب ناحیه مربوط به سلول A1 تا B3 | Range(“a1”, “b3”).Select |
انتخاب ناحیه مربوط به سلول A1 تا B3 و D4 تا E7 | Range(“a1:b3,d4:e7”).Select |
انتخاب ستون A | Range(“a:a”).Select |
انتخاب ستون A تا E | Range(“a:e”).Select |
انتخاب ردیف ۴ ام | Range(“4:4”).Select |
نکته قابل توجه در کدهای فوق آن است که آنچه در داخل فرمول Range قرار میگیرد، در بین ” ” آورده میشود و در صورت عدم استفاده از ” “، VBA آن را به عنوان متغییر میشناسد و برای زمانی که نام محدودهای، در اکسل (از طریق ctrl+f3) تغییر داده شده، و بخواهیم آن را انتخاب کنیم مناسب است. برای مثال اگر نام محدودهای در Sheet فعال برابر با Data باشد و بخواهیم آن را آدرس دهیم، میتوانیم از روش زیر استفاده نماییم:
range(“Data”).Select
و یا
Dim scope As String
scope = “Data”
Range(scope).Select
به منظور انتخاب سلول A1 در Sheet1 در Book1.Xlsx به صورت زیر عمل میکنیم.
Workbooks(“Book1.xlsx”).Sheets(“sheet1”).Range(“a1”).Select
و در صورت فعال بودن Book1.xlsx میتوان کد فوق را به صورت زیر نوشت.
Sheets(“sheet1”).Range(“a1”).Select
و همچنین اگر sheet1 در Book1.xlsx فعال باشد، کد فوق را میتوان به صورت زیر نوشت.
Range(“a1”).Select
Value
نکته قابل توجه آن است که به منظور ایجاد تغییرات بر روی محدوده ی هر Object دیگر نیاز به انتخاب آن نمیباشد، مثلا اگر بخواهیم مقدار وارد شده در سلول A1 در Sheet1 در Book1.Xlsx را تغییر دهیم میتوانیم کد زیر را وارد کنیم.
Workbooks(“Book1.xlsx”).Sheets(“sheet1”).Range(“a1”).value=3
در این حالت، مقدار ۳ در این سلول وارد میگردد.
از آنجایی که ویژگی پیشفرض برای شیء Range، Value میباشد، میتوان کد فوق را به صورت زیر نوشت.
Workbooks(“Book1.xlsx”).Sheets(“sheet1”).Range(“a1”) = 3
مقدار Value هم قابل تغییر میباشد و هم قابل خواندن، به عبارت دیگر آگر بخواهید مقدار موجود در سلول A1 را به کاربر نمایش دهید، میتوانید دستور زیر را به کار بگیرید.
MsgBox Range(“a1”).Value
Text
یکی دیگر از ویژگی های مربوط به Range که فقط خواندنی است، text میباشد. تفاوت Text و Value در آن است که در Text فرمت سلول مد نظر نیز در نظر گرفته میشود مثلا اگر در سلول A1 با فرمت درصد مقدار ۲ نوشته شده باشد، خروجی Value برابر با ۰٫۰۲ میباشد و خروجی Text برابر با ۲% است. (دستور زیر مقدار خروجی text را در خط اول و خروجی Value سلول a2 را در خط دوم نمایش میدهد)
MsgBox Range(“a1”).Text & vbNewLine & Range(“a1”).Value
(علامت & برای پیوند متون استفاده میگردد و کد VbNewLine برای اضافه کردن یک خط جدید.)
Row و Column
ویژگی دیگر مربوط به Range که فقط خواندنی میباشند و قابل تغییر نمیباشند، شماره ستون و سطرش میباشد که با دستور زیر به دست میآید
Range(“a5”).Row
Range(“a5”).Column
دستور فوق برای زمانی مناسب میباشد که بخواهیم محل سلول فعلی را مشخص کنیم، مثلا
MsgBox Selection.Row
دستور دیگر جهت پیدا کردن آدرس مطلق سلول فعال، Address میباشد.
MsgBox Selection.Address
Formula
اگر بخواهیم در سلول A1 فرمولی جهت محاسبه مجموعه مقادیر موجود در محدوده b1 تا b10 ، وارد نمایم، میتوان از دستور زیر استفاده نمود.
Range(“a1”).Formula = “=sum(b1:b10)”
باید توجه نمود که فرمول مورد نظر با آوردن = باید در بین ” ” قرار بگیرد حال اگر فرمول جالتی باشد که در آن علامت ” به کار رفته باشد هر علامت ” را با “” جایگزین میکنیم.
مثلا اگر بخواهیم در سلول a1 فرمول b1 & ” – ” & b2 را بنویسیم داریم (ترکیب سلول b1 و b2 با یک خط فاصله میان آنها)
Range(“a1”).Formula = “=b1 &”” – “” & b2″
Font
ویژگی Font، جزء ویژگیهای خواندنی و قابل تغییر میباشد که در آن میتوان فونت مربوت به سلول را تغییر داد مانند مثال زیر که در آن فونت و مشخصات مربوت به آن را برای سلول A1 تغییر میدهد.
Range(“a1”).Font.FontStyle = “B Nazanin”
Range(“a1”).Font.Size = 24
Range(“a1”).Font.Bold = True
Range(“a1”).Font.Italic = True
Range(“a1”).Font.Color = RGB(222, 25, 25)
خط اول دستور فوق، فونت سلول را B nazanin قرارمیدهد، خط دوم سایز آن را ۲۴ میکند و خط سوم و چهارم فونت را به صورت bold و Italic تغییر میدهد و خط آخر رنگ نوشته را تغییر میدهد. در ارتباط با رنگ باید گفت که سمت راست تساوی از RGB(r,g,b) استفاده شده است که r,g,b مقادیر بین ۰ تا ۲۵۶ را میپذیرند و به ازای هر گونه ترکیبی از این سه پارامتر، رنگ خاصی تولید میشود، تعداد رنگها به قدری زیاد است که کسی تمامی حالات را نمیداند فقط میتوان گفت اگر هر سه ۰ باشند رنگ حاصله سیاه میباشد و با ۲۵۶ قرار دادن هر سه، رنگ سفید به دست میآید.
جهت سهولت در نوشتن دستور فوق میتوان از تابع with استفاده نمود. (به صورت زیر)
With Range(“a1”).Font
.FontStyle = “B Nazanin”
.Size = 24
.Bold = True
.Italic = True
.Color = RGB(222, 25, 25)
End With
End
در محیط نرمافزار اکسل کلیدهای بسیاری وجود دارد که باعث تسریع در انجام کارها میگردد، یکی از پرکاربرد ترین آمها ترکیب کلید Ctrl با جهتها میباشد که در این حالت، سلول فعال به اخرین سلول مشابه در مسیر جهت اعمال شده حرکت میکند. به منظور انجام این دستور میتوان از در محیط VBA میتوان از دستور END استفاده نمود.
عمل | دستور |
Ctrl + up | Selection.End(xlUp).Select |
Ctrl + right | Selection.enf(xlToRight).Select |
Ctrl + down | Selection.End(xlDown).Select |
Ctrl + left | Selection.End(xlToLeft).Select |