در جلسه قبل انواع عملگر ها و متتغیر های ویژوال بیسیک و توابع ابتدایی مورد نیاز برای کار با vba آشنا شدیم، امروز میخواهم مطالب پیشرفته تری از توابع vba بیان کنم که آشنا بودن با آنها کار را برای برنامه نویسی بسیار آسان می نماید و با ترکیب این توابع با توابع پایه ای میتوانید برنامه های حرفه ای و کاربردی را تهیه نمایید.
تابع Workbook و Workbooks :
در اکسل ما همیشه با یک فایل کلی و زیر مجموعه از آنها روبرو هستیم مثل ستون و سلول های آن یا ردیف و سلول های آن، فایل های اکسل نیز اینطور است، وقتی فایل های جدید از اکسل را ایجاد میکنیم با یک برنامه کلی اکسل که تمامی فایل های اکسل در آن گنجانده شده می باشند که به این فایل کلی Workbooks و به زیر مجموعه های آن workbook یا کاربرگ گفته می شود. به عنوان مثال چند فایل اکسل ایجاد کنید و کد های زیر را با با توجه به جلسه های قبل اجرا نمایید :
تایع Workbooks :
همانطور که گفته شد به مجموعه ای فایل های اکسل که در حال اجرا می باشند Workbooks گفته می شود، به عنوان مثال چند فایل اکسل ایجاد کنید و کد های زیر را با با توجه به جلسه های قبل اجرا نمایید :
1 2 3 4 |
Dim cnt As Integer cnt = Workbooks.Count MsgBox cnt |
مشاهده میکنید که تعداد تمامی فایل های اکسل را گزارش میدهد.
تایع Workbook :
به هر کدام از این فایل های اکسل که ایجاد کردیم یک Workbook یا کاربرگ گفته می شود، برای مثال کد زیر نام اکسلی که active یا فعال است را نمایش میدهد :
1 2 3 4 |
Dim x As String x = ActiveWorkbook.Name MsgBox x |
تابع ThisWorkbook و ActiveWorkbook :
اما در آدرس دهی فایل های اکسل خودمان در vba دو تابع بسیار کاربردی ThisWorkbook و ActiveWorkbook قرار دارد و در بیشتر مواقع از این دو تابع استفاده میکنیم و در بیشتر مواقه هر دو یک اسم را برمیگردانند اما ThisWorkbbok مربوط به کاربرگی می باشد که کدهای vba مربوط به آن می باشد اما ActiveWorkbook مربوط به کاربرگ فعال می باشد یا Current می باشد به مثال زیر توجه نمایید :
1 2 |
Range("a1").Value = ThisWorkbook.Name Range("a2").Value = ActiveWorkbook.Name |
خب اگر کدهای بالا را شما در کاربرگی که کدها را نوشته اید و هم فعال می باشد اجرا کنید هر دو یک خروجی را برمیگردانند اما اگر کد ها را در یک کاربرگ بنویسید و همین کدها را در کاربرگ دیگر اجرا نمایید مشاهده میکنید که این بار خروجی ها با هم تفاوت دارند.
تایع Sheet و Sheets :
همانطور که در فایل های اکسل با زیر مجموعه ها طرف هستیم در شیتهای موجود در هر فایل اکسل نیز همینطور است. تمامی شیت های موجود در یک کاربرگ شامل Worksheets ها و Chart ها را sheets می نامیم. و هر Sheet میتوانید شامل یک Worksheet یا یک Chart باشد، همچنین می توانیم توابع مختلف را روی Sheets اجرا کنیم و برنامه های خود را حرفهای کنیم. به مثال زیر توجه نمایید، هنگامی که از تابع Sheets استفاده میکنیم باید حتما از نام شیت برای آدرس دهی استفاده کنیم :
1 |
Sheets("sheet1").Range("a1").Value = "B68" |
اگر نخواهیم از نام شیت استفاده کنیم باید حتما از شماره شیت در کدنویسی استفاده نماییم :
1 |
Sheets(1).Range("a2").Value = "B68" |
همانطور که در بالا هم اشاره کردم Sheet زیرمجموعه Sheets می باشد که میتواند هم یک Worksheet باشد هم یک Chart، به مثال زیر توجه نمایید :
1 |
sheet1.Range("a1").Value = "B68" |
در این نوع آدرس دهی ما نمی توانیم از نام شیت استفاده کنیم حتما باید شماره شیت را وارد نماییم، تایع Sheet در برنامه نویسی vba اکسل بیشترین کاربرد را داردو همچنین می توانیم اعمال مختلفی را روی آن انجام دهیم برای مثال اگر بخواهیم اعداد شیت های موجود در کاربرگ را بدست بیاوریم :
1 2 3 4 |
Dim x As Integer x = Sheets.Count MsgBox x |
در کد بالا ابتدا براساس مطالب جلسه سوم یک متغیر از نوع عددی صحیح (integer) تعریف کردم به این دلیل که تعداد شیت های ما حتما صحیح می باشند و امکان ندارد که به صورت اعشاری باشد و همچنین نمی تواند به صورت رشته ای (String) یا از نوع Double باشد، البته لازم نیست این موارد را حفظ کنید با تمرین های بیشتر به نوع متغیر ها و نحوه استفاده از آن ها مسلط خواهید شد، سپس با تابع Sheets.count تعداد کاربرگ ها را گرفتیم.
تابع Worksheet و Worksheets :
در متن قبلی Sheets را توضیح دادیم اما Sheet در اکسل زیرمجموعه ای دارد به نام Worksheet و تمامی شیت های موجود در اکسل را Worksheets می نامیم که بدون Chart می باشند و به هر کدام از این ها نیز یک Worksheet گفته می شود. به مثال زیر توجه نمایید :
1 |
Worksheets("sheet1").Range("a1").Value = "B68" |
در مثال بالا از مجموعه شیت ها نام شیت یک را دادیم که در فایل من sheet1 می باشد و سلول آن را مقدار دهی کردیم، همانطور میتوانیم به جای نام شیت از شیت اول استفاده کنیم :
1 |
Worksheets(1).Range("a1").Value = "B68" |
در شیت بالا به جای نام شیت، شیت اول را آدرسی دهی کردیم.
در جلسه بعدی ترکیب این کد ها را خواهم گفت.
6 دیدگاه برای "آموزش برنامه نویسی VBA اکسل – قسمت چهارم"