1-1: تب Developer
2-1: ویرایشگر VBA
3-1: ماکروها (Macros)
4-1: Object, Method And Parameter
5-1: نوار ابزار Developer
6-1: دکمه ها (Buttons)
7-1: Offset
8-1: Resize
1-2: متغیرها (Variables)
2-2: کار با متغیرها (Variables)
3-2: Option Explicit
4-2: جمع / تفریق
5-2: ضرب / تقسیم
6-2: انواع متغیرها
1-3: دستور IF
2-3: Else … ElseIf
3-3: شرط ها (Conditions)
4-3: عملگرهای منطقی
5-3: تمرین اول
6-3: تمرین دوم
7-3: Select Case
8-3: تمرین سوم
9-3: With … End With
1-4: رشته های متنی (Strings)
2-4: Change Case
3-4: Trim, Len, Space
4-4: Replace
5-4: ?In the String
6-4: Left and Right
7-4: تابع Mid
8-4: تمرین چهارم
1-5: For Loops
2-5: For Each
3-5: ویژگی Cells
4-5: Do Loops
1-6: آشنایی با آرایه ها (Arrays)
2-6: Arrays, Loops
3-6: آرایه چند بعدی (Multi Array)
4-6: Arrays and Split
1-7: Subroutines
2-7: ارسال مقادیر به Sub
3-7: آشنایی بیشتر با Message Box
4-7: توابع (Functions)
5-7: استفاده ار توابع اکسل در VBA
6-7: دستور Set
1-8: بازکردن فایل متنی (Text File)
2-8: اضافه کردن اطلاعات به فایل متنی
1-9: یوزر فرم ها (User Forms)
2-9: دکمه ها (Buttons)
3-9: اجرای یوزر فرم
4-9: اضافه کردن پنل جدید
5-9: سفارشی سازی نوار ابزار اکسل
1-10: نمایشگر تصاویر (Picture Viewer)
2-10: طراحی فرم
3-10: اضافه کردن دکمه ها
4-10: اضافه کردن Tab جدید
5-10: رویداد Initialize Form (مقداردهی اولیه)
6-10: درج اطلاعات تصویر در TextBox
7-10: دکمه رادیویی (Option Button)
8-10: بارگذاری تصاویر (ImageBox)
9-10: دکمه های بعدی / قبلی
10-10: اضافه کردن تصویر جدید
11-10: ذخیره تصویر جدید
12-10: کپی کردن تصویر
1-11: نمودار (Chart)
1-12: کنترل Treeviews
2-12: Parent/Child Nodes
3-12: راه اندازی اولیه (Initialize)
4-12: رویداد Node Click
در اکسل Object به هر آن چیزی گفته می شود که قصد داریم از ویژگی (Property) های آن استفاده کرده یا آن ها را تغییر دهیم، برای مثال worksheet. اگر بعد از نوشتن Object یک نقطه بزاریم لیست ویژگی های آن نشان داده می شود. ویژگی هایی که کاری را برای ما انجام می دهند را Method می نامیم برای مثال Worksheets.Add که یک شیت جدید را ایجاد می کند. این کار Method ها می توانند همراه با پارامتر(Parameter) ها انجام شوند برای مثال Worksheets.Add After:=Worksheets(1) که شیت جدید را بعد از شیت1 قرار می دهد.
احتمالا کمی مبهم و گیج کننده باشد. در ادامه با یک مثال عینی این موضوع روش و ساده خواهد شد.
یک تلویزیون را در نظر بگیرید. این تلویزیون یک Object است که میتوانیم به صورت ذیل به آن اشاره کنیم:
tv
اگر قصد خرید تلویزیون را داشته باشیم به اطلاعات بیشتری نیاز داریم. برای مثال اندازه (size) تلویزیون چقدر باشد. برای اضافه کردن این ویژگی به این صورت عمل می کنیم:
tv.size
تلویزیون 55 اینچ را در نظر داریم. جلوی عبارت بالا علامت مساوی گذاشته و اندازه را می نویسیم:
tv.size = “55 inch”
تا حالا ما یک Object داریم (tv)، یک ویژگی (size) و همچنین مقداری برای اندازه (55 inch). اگر ما قصد خرید این تلویزیون را داشته باشیم باید کار انجام دهیم یعنی “خریدن” این عمل خریدن را Method می نامیم. یعنی خریدن یک Method برای tv است:
tv.buy
برای Method ها می توان تنظیمات بیشتری در نظر گرفت که به آن پارامتر(Parameter) می گویند. یک پارامتر برای Method خرید می تواند نحوه پرداخت (PaymentType) مبلغ تلویزیون باشد. این مقادیر مختص به خود را دارد مثل خرید نقدی، قسطی یا با چک. تمامی این موارد را به صورت ذیل می توان نشان داد:
tv.buy PaymentType:=Cash
یعنی خرید تلویزیون که نحوه پرداخت مبلغ آن به صورت نقدی باشد. در این عبارت بین متد buy و پارامتر PaymentType به اندازه یک Space فاصله وجود دارد و مقدار پارامتر نیز بعد از علامت دونقطه و مساوی (=:) و بدون فاصله آورده شده است.
پارامترهای بیشتری را می توان برای متد buy در نظر گرفت. برای مثال پارامتر تخفیف (Discount) و هزینه ارسال(DeliveryCharge):
tv.buy PaymentType:=Cash Discount:=No DeliveryCharge:=No
دقت کنید که بین پارامترها از یک فاصله استفاده شده است.
بسیار خب! فکر کنم تا اینجای کار موضوع به اندازه کافی برایتان روشن شده باشد. برگردیم به اکسل. در زبان برنامه نویسی VBA با Object ، Method ، properties و parameter بسیار زیاد سرو کار داریم. برای مثال یک Object به نام ActiveCell داریم که نشان دهنده سلول فعال در اکسل است و یکی از ویژگی های آن Font است:
Activecell.Font
خود Font نیز دارای ویژگی های زیادی است که یکی از آن ها Name است:
ActiveCell.Font.Name
چون Name یک ویژگی یا Property است باید مقداری برای آن تعیین کنیم:
ActiveCell.Font.Name = “Times New Roman”
ActiveCell.Font.Name = “B Nazanin”
این کد نوع فونت سلول فعال را ” Times New Roman ” یا ” B Nazanin ” قرار می دهد. با کد ذیل نیز می توانیم محتوای سلول فعال را توپر یا Bold نماییم:
ActiveCell.Font.Bold = True
در این کد ما یک Object به نام ActiveCell که از ویژگی Font آن استفاده شده و خود فونت نیز ویژگی Bold را دارد که مقدار آن برابر True است.
متد Methods
یک مثال خوب در این مورد متد Quit است:
Application.Quit
کاری که متد Quit انجام می دهد خروج کامل از برنامه اکسل است و این همان تفاوت Method با Property است یعنی متدها کاری را برای ما انجام می دهند اما ما برای ویژگی ها مقداری در نظر می گیریم. یک راه ساده برای تشخص متد ها استفاده از To است. کلماتی که برای متدها استفاده می شوند “فعل” هستند و وقتی همراه با To خوانده شود معنادار هستند برای مثال To Quit (به معنای ترک کردن) اما To Font بی معنا است بنابراین Font متد نیست.
مثال دیگر از متدها، متد Add است که از آن می توان برای اضافه کردن شیت جدید به اکسل استفاده کرد:
Worksheets.Add After:=Worksheets(1)
Object مورد استفاده در اینجا Worksheets است و متد Add بعد از قرار دادن یک نقطه آورده شده، سپس یک فاصله (Space) و بعد از آن یکی از پارامترهای متد Add یعنی After استفاده شده است. مقدار مورد استفاده برای After نام شیت (Worksheet) است. در داخل پرانتز هم می توان از نام شیت استفاده کرد و هم از اعداد. عدد 1 در اینجا به معنای اولین شیت در فایل اکسل جاری است.
کاری که این کد انجام می دهد این است که یک شیت جدید بعد از اولین شیت موجود اضافه می کند. برای اضافه کردن شیت جدید قبل از شیتی به نام Data کد را به صورت ذیل می نویسیم:
Worksheets.Add Before:=Worksheets(“Data”)
ویژگی Range
تقریبا در تمامی ماکروهایی که ایجاد می کنیم نیاز داریم از ویژگی Range استفاده کنیم.اما منظور از “Range” چیست؟ Range به محدوده ای از سلولها در یک Worksheet گفته میشود. این محدوده میتواند شامل یک سلول واحد یا گروهی از سلولها باشد. برای اشاره به محدودهی مورد نظر، آن را داخل علامت ” “ و بین دو پرانتز ( ) قرار می دهیم.
مثال برای اشاره به یک سلول:
Range(“A1”)
مثال برای اشاره به چند سلول:
Range(“A1:B7”)
به دو نقطهی (:) بین دو آدرس سلول و نبود فاصله بین آنها دقت کنید. سلول اول (A1) گوشهی بالا سمت چپ و سلول دوم (B7) گوشهی پایین سمت راست محدودهی انتخابی شما را مشخص میکنند. به عبارت دیگر، این محدوده یک شکل مستطیل (چهارضلعی) را تشکیل میدهد.
روش دیگر برای اشاره به چند سلول، جدا کردن آنها با ( , ) است. در این روش نیز هر سلول با ” “ احاطه میشود:
Range(“A1”, “B7”)
این محدوده شامل سلولهای A1 تا B7 میشود.
پس از تعریف Range، میتوانید کارهایی با محدوده موردنظر انجام دهید. یکی از آن ها استفاده از متد Select است. همانطور که از نامش پیداست، این متد محدودهی انتخابی از سلولها را انتخاب (هایلایت) میکند.
Range(“A1”).Select
Range(“A1:B7”).Select
شئ Worksheets
همانطور که گفته شد، Range یک ویژگی (property) است. اما متعلق به چه چیزی است!؟ خب Range، یکی از ویژگی های Worksheets است. به عبارت دیگر، برای اشاره به یک محدوده خاص، ابتدا باید به برگه کاری (Worksheets) سپس به محدوده سلولهای مورد نظر خود اشاره کنیم. فرض کنید میخواهیم سلول A1 در برگه کاری با نام “Sheet1” را انتخاب کنیم. برای این کار از کد زیر استفاده میکنیم:
Worksheets(“Sheet1”).Range(“A1”).Select
در این کد:
- Worksheets(“Sheet1”) به برگه کاری با نام “Sheet1” اشاره میکند.
- Range(“A1”) به سلول A1 در برگه کاری “Sheet1” اشاره دارد.
- متد Select سلول A1 را انتخاب میکند.
در اینجا ابتدا از Worksheet استفاده شده است و در داخل پرانتز و ” “ نام Worksheet مورد نظر خود را نوشتیم (Sheet1). همچنین می توان از اعداد برای اشاره به Worksheet موردنظر استفاده کرد:
Worksheets(1).Range(“A1”).Select
عدد 1 در اینجا به اولین worksheet در فایل اکسل حاضر اشاره دارد.
اگر فقط از Range به تنهایی استفاده کنیم، اکسل بطور پیش فرض آن را برای برگه کاری که فعال است در نظر می گیرد.ا گر میخواهید به یک برگه کاری دیگر، مثلاً Sheet2 اشاره کنید، باید آن را با نام صدا بزنید:
Worksheets(“Sheet2”).Range(“A1”).Select
و یا شماره آن را وارد کنید:
Worksheets(2).Range(“A1”).Select
در بخش بعدی، ابزارهای موجود در تب Developer را با جزئیات بیشتری بررسی خواهیم کرد.