آموزش مقدماتی کد نویسی vba در اکسل_38
در جلسه سی و هشتم از آموزش اکسل به موضوع کد نویسی vba در اکسل می پردازیم.
در کد نویسی vba در اکسل به معرفی Range و قابلیت هایی که در آن داریم می پردازیم، متد ها و سایر خاصیت های آن را نیز توضیح میدهیم.
نحوه کد نویسی vba در اکسل
قبلا با کد زیر آشنا بودیم:
Range(“B3”).Value = 2
با این کد با رنج مورد نظر مقدار می دادیم و نتیجه به صورت زیر بود:
حالا کد زیر را انتخاب کنید، متد Range که از کتد های شی woorkseet هست در ورودی خود یک رنج به صورت متن(رشته) از ما میگیرد و آن رنج را پیدا میکند، حال ما با علامت . و سپس نوشتن value می خواهیم فیلد value آن رنج پیدا شده را پر کنیم
اکنون در این مثال رنج ما شامل چندین خانه می باشد:
Range(“A1:A4”).Value = 5
یا به صورت دیگر با دادن چندین رنج به متد :
Range(“A1:A2,B3:C4”).Value = 10
اگ مطابق دروس قبلی به یک خانه نامی اختصاص داده باشید، می توانید برای یافتن آن رنج از نام نیز استفاده کنید:
Range(“Prices”).Value = 15
سلول ها
در کنار متد Range شما از Cells هم میتوانید استفاده کنید، این متد در خروجی به شما رنج میدهد اما تفاوتی دارد که در ورودی لازم نیست ساختار متنی داشته باشید و مثلا “A1” را به صورت ۱و۱ نشان می دهید، و فقط به اعداد سر و کار دارید!
اما این چه فایده ای دارد؟ در زمانی که از حلقه ها خواستید استفاده کنید خواهید فهمید که کار با Cells چقدر راحت تر است…
Cells(3, 2).Value = 2
اگر بخواهید رنجی شامل چند خانه اختیار کنید:
Range(Cells(1, 1), Cells(4, 1)).Value = 5
خروجی Cells(1, 1) همان A1 است و خروجی Cells(4, 1) نیز A4 است، پس انگار نوشته اید Range(A1, A4)
نتیجه:
شما لازم نیست کد ها را در هم درهم بنویسید! همانطور که ابتدای این درس گفتم خروجی worksheet.Range(“A1:C4”) یک رنج است و شما .Value را برای آن رانج دارید پر میکنید. عبارت worksheet را هم چون معلوم است درون کدام ورکشیت در حال کد نویسی هستید نمیخواهد بنویسید.
حال میتوانید این کار ها را جدا جدا بنویسید:
Dim example As Range
ابتدا یک متغیر با نام example ساختیم، این متغیر به سبکی ساخته شد که فقط میتواند برای Range ها بکار رود! یعنی درون example نمیتوانید عدد یا متن یا وروکشیت و ورکبوک بریزیم! فقط میتوانیم رنج یا زیر مجموعه های رنج را بریزیم.
Set example = Range(“A1:C4”)
با عبارت Set خروجی متد Range که یک رنج بود را درون example میریزیم(البته عبارت درون ریختن صحیح نیست و در واقع ما به آن رنج یک اشاره گر وصل می کنیم)
example.Value = 8
حال example در هر جا به کار برده شود ، منظور همان رنج “A1:C4” است! و به رنج “A1:C4” در حال اشاره کردن است!!
خروجی کار:
تا اینجا برای رنج ها فقط با value آشنا شدیم! حال به متد ها و فیلد های دیگر آن نیز آشنا می شویم
انتخاب یک رنج با کد نویسی vba در اکسل
شما می توانید با متد Select به راحتی رنج خود را انتخاب نمایید.
Dim example As Range
Set example = Range(“A1:C4”)
example.Select
اگر درون یک شیت مثل sheet1 در حال کد نویسی هستید، و بخواهید اتفاق هایی را برای مثال رنج های sheet3 رقم بزنید، باید به سبک زیر اقدام کنید:
Worksheets(3).Activate
Worksheets(3).Range(“B7”).Select
ابتدا آن شیت را فعال میکنیم! سپس رنج را انتخاب کرده و مقدار آن را تغییر میدهیم.
کار با ردیف ها در کد نویسی vba در اکسل
رنج ها متدی با نام Rows دارند که میتوانید ردیف های آن رانج را در اختیار بگیرید و روی آن ها عملیات دلخواه را پیدا کنید:
Dim example As Range
Set example = Range(“A1:C4”)
example.Rows(3).Select
برای کار با ستون های هم میتوانید از متد Columns استفاده نمایید:
Dim example As Range
Set example = Range(“A1:C4”)
example.Columns(2).Select
کپی و پیست در VBA اکسل
به راحتی با متد های copy و past می توانید این عملیات ها را برای رنج ها انجام دهید.
متد Paste برای شی های ورکشیت است ، با متد ActiveSheet شیت فعال را پیدا می کنیم و روی آن متد Paste را اجرا می کنیم.
Range(“A1:A2”).Select
Selection.Copy
Range(“C3”).Select
ActiveSheet.Paste
البته راه دیگر هم برای کپر کردن وجود داشت:
Range(“C3:C4”).Value = Range(“A1:A2”).Value
پاک کردن مقادیر رنج در VBA
برای این جار هم میتوانید از متد ClearContents استفاده کنید و هم میتوانید فیلد Value آن رنج دلخواه را با متن خالی پر کنید:
Range(“A1”).ClearContents
//یا
Range(“A1”).Value = “”
تعداد خانه ها
متد Count تعداد خانه های یک رنج را به ما میدهد
Dim example As Range
Set example = Range(“A1:C4”)
MsgBox example.Count
مسلما تعداد خانه های رنج example عدد ۱۲ خواهد بود.
مثال دیگر:
Dim example As Range
Set example = Range(“A1:C4”)
MsgBox example.Rows.Count
خروجی:
با این روش می توانید تعداد ردیف ها را هم بدست آوریم ، در همین درس گفتید که برای گرفتن ردیفی از یک رنج به صورت example.Rows(30).Select عمل میکنیم اما اگر بخواهیم بدانیم این رنج اصلا ردیف ۳۰ دارید یا نه به وسیله example.Rows.Count می توانیم آن را چک کنیم.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.