کلمه VBA مخفف جمله Visual Basic for Applications است. این یک ادغام از زبان برنامه نویسی رویداد محور مایکروسافت ویژوال بیسیک با برنامه های مایکروسافت آفیس مانند Microsoft Excel، Microsoft Word، Microsoft PowerPoint و غیره است.
با اجرای Visual Basic IDE در برنامههای مایکروسافت آفیس، میتوانیم راهحلها و برنامههای سفارشیسازی شده برای افزایش قابلیتهای آن برنامهها بسازیم.
در میان ویژوال بیسیک برای برنامه های کاربردی، Microsoft Excel VBA محبوب ترین است. دلایل زیادی وجود دارد که چرا ما باید VBA را برای مایکروسافت اکسل یاد بگیریم، از جمله آنها این است که شما می توانید اصول برنامه نویسی ویژوال بیسیک را در محیط MS Excel، بدون نیاز به خرید نسخه ای از نرم افزار مایکروسافت ویژوال بیسیک، یاد بگیرید.
دلیل دیگر یادگیری Excel VBA این موضوع میباشد که شما می توانید توابع سفارشی سازی شده را برای تکمیل فرمول ها و توابع داخلی مایکروسافت اکسل بسازید. اگرچه MS Excel دارای فرمول ها و توابع داخلی زیادی است، اما آنها برای محاسبات و برنامه های پیچیده خاص کافی نیستند.
به عنوان مثال، محاسبه پرداخت ماهانه برای وام گرفته شده با استفاده از فرمول های داخلی اکسل بسیار دشوار است، اما نوشتن کد VBA برای چنین محاسبه ای نسبتا ساده تر است. این مقاله به گونه نوشته شده است که
شما می توانید کد Excel VBA را در هر نسخه از مایکروسافت آفیس، از جمله MS Office 97، MS Office2000، MS Office2002، MS Office2003، MS Office XP، MS Office 2007 و MS Offce 2010 بنویسید.
با استفاده از VBA، می توانید ابزارهای بسیار قدرتمندی بسازید. که در VBA را برای MS Excel با سرعت خود یاد بگیرید.
برنامه MS Excel شامل برنامه های مالی و علمی که می توانند محاسبات مالی و برنامه هایی را انجام دهند که می توانند تجزیه و تحلیل های آماری را انجام دهند.
دو راه وجود دارد که می توانید آموزش برنامه نویسی در اکسل VBA را در MS Excel شروع کنید. اولین مورد این است که یک دکمه فرمان را روی صفحه گسترده قرار دهید و با کلیک بر روی دکمه فرمان برنامه نویسی را شروع کنید تا ویرایشگر ویژوال بیسیک راه اندازی شود.
راه دوم این است که ویرایشگر ویژوال بیسیک را با کلیک بر روی منوی ابزارها اجرا کنید، سپس از منوی کشویی گزینه Macro را انتخاب کنید و ویرایشگر ویژوال بیسیک را انتخاب کنید. اجازه دهید ابتدا با دکمه فرمان شروع کنیم. برای قرار دادن یک دکمه فرمان بر روی صفحه گسترده MS Excel، روی آیتم View در نوار منوی MS Excel کلیک کنید و سپس بر روی نوار ابزار کلیک کنید و در نهایت جعبه ابزار کنترل را انتخاب کنید که پس از آن نوار جعبه ابزار کنترل ظاهر می شود، همانطور که در شکل نشان داده شده است.
سپس بر روی دکمه فرمان کلیک کنید و آن را مانند تصویر در صفحه گسترده بکشید MS Excel
اکنون دکمه فرمان را انتخاب کرده و مطمئن شوید که دکمه طراحی در سمت چپ جعبه ابزار کنترل فشار داده شده است. سپس بر روی دکمه فرمان کلیک کنید تا ویرایشگر ویژوال بیسیک راه اندازی شود. عبارات را مطابق شکل 1.3 وارد کنید.
بیایید کد را در اینجا بنویسیم:
مثال 1.1
Private Sub CommandButton1_Click ()
Range (“A1:A10).Value=”Visual Basic “
Range (“C11”).Value=Range (“A11”).Value +Range (“B11”).
Value End Sub
دستور اول سلول A1 تا سلول A10 را با عبارت "Visual Basic" پر می کند در حالی که دستور دوم مقادیر سلول A11 و سلول B11 را اضافه می کند و سپس مجموع را در سلول C11 نمایش می دهد.
برای اجرای برنامه، باید با کلیک بر روی دکمه اکسل در گوشه سمت چپ نوار ابزار از ویرایشگر ویژوال بیسیک خارج شوید. زمانی که در محیط MS Excel هستید می توانید با کلیک بر روی دکمه طراحی از حالت طراحی خارج شوید و سپس بر روی دکمه فرمان کلیک کنید.
اجرای VBA فوق خروجی را همانطور که در شکل 1.4 نشان داده شده است به شما می دهد
نوشتن کد VBA اکسل تقریباً دقیقاً مشابه نوشتن کد در ویژوال بیسیک است، به این معنی که باید از سینتکس های (به مجموعه قوانین نوشتاری درون یک زبان برنامه نویسی، Syntax (سینتکس) می گویند) مشابه ویژوال بیسیک استفاده کنید.
با این حال، کدهایی برای استفاده در MS Excel طراحی شده اند، مانند استفاده از شی یا تابعی به نام Range. این تابعی است که مقدار یک سلول یا محدوده ای از سلول ها را در صفحه گسترده MS Excel مشخص می کند. فرمت استفاده از Range به شرح زیر است:
Range(“cell Name”).Value=K or Range(“Range of Cells”).Value=K
Where Value is the property of Range and K can be a numeric value or a string
مثال 1.2
Private Sub CommandButton1_Click ()
Range (“A1”).Value= “VBA”
End Sub
مثال بالا وقتی کاربر دکمه فرمان را فشار می دهد، متن "VBA" را در سلول A1 صفحه گسترده MS Excel وارد می کند. همانطور که در مثال 1.3 نشان داده شده است، می توانید از Range بدون خاصیت Value نیز استفاده کنید:
Example 1.3
Private Sub CommandButton1_Click ()
Range ("A1") = 100
End Sub
در مثال بالا، با کلیک بر روی دکمه فرمان، مقدار 100 را در سلول A1 صفحه گسترده MS Excel وارد کنید. مثال زیر نحوه وارد کردن مقادیر را به یک محدوده از سلول ها نشان می دهد:
Example 1.4
Private Sub CommandButton1_Click ()
Range ("A1:A10") = 100
End Sub
متغیرها مانند صندوق های پستی در اداره پست هستند. محتویات متغیرها هر از گاهی تغییر می کند، درست مانند صندوق های پستی. در Excel VBA، متغیرها مناطقی هستند که توسط حافظه کامپیوتر برای نگهداری داده ها اختصاص داده شده است. مانند صندوق های پستی، هر متغیر باید یک نام داده شود. برای نامگذاری یک متغیر در Excel VBA، باید مجموعه ای از قوانین را دنبال کنید، به شرح زیر:
قوانین زیر هنگام نامگذاری متغیرها در VBA آمده است
❖ باید کمتر از 255 کاراکتر باشد
❖ هیچ فاصله ای مجاز نیست
❖ نباید با عدد شروع شود
❖ پریود مجاز نمی باشد
در VBA، ما باید متغیرها را قبل از استفاده آنها با تخصیص نام ها و انواع داده ها اعلام کنیم. انواع داده های VBA زیادی وجود دارد که می توان آنها را به طور کلی به دو نوع تقسیم کرد، یعنی انواع داده های عددی و انواع داده های غیر عددی.
انواع داده های عددی انواع داده هایی هستند که از اعداد تشکیل شده اند که می توان آنها را به صورت ریاضی با عملگرهای مختلف حسابی استاندارد مانند جمع، تفریق، ضرب، تقسیم و غیره محاسبه کرد. در VBA داده های عددی به 7 نوع تقسیم می شوند
شما می توانید متغیرها را به صورت ضمنی یا صریح اعلام کنید. برای مثال sum=text1.text به این معنی است که متغیر sum به طور ضمنی و آماده دریافت ورودی در textbox1 اعلام شده است. نمونه های دیگر از اعلام ضمنی عبارتند از volume=8 و label=”Welcome”. از طرف دیگر، برای اعلان صریح، متغیرها معمولاً در بخش عمومی پنجره کد با استفاده از دستورات Dim اعلان می شوند. در اینجا نحو است:
متغیر Name را به عنوان DataType کم کنید
مثال 2.1
Dim password As String
Dim yourName As String
Dim firstnum As Integer
Dim secondnum As Integer
Dim total As Integer
Dim BirthDay As Date
همچنین می توانید آنها را در یک خط ترکیب کنید و هر متغیر را با کاما جدا کنید، به شرح زیر:
Dim password As String, yourName As String, firstnum As Integer.
اگر نوع داده مشخص نشده باشد، VBA به طور خودکار متغیر را به عنوان یک Variant اعلام می کند. برای اعلان رشته، دو قالب ممکن وجود دارد، یکی برای رشته با طول متغیر و دیگری برای رشته با طول ثابت.
برای رشته با طول متغیر، فقط از همان قالب مثال 2.1 بالا استفاده کنید. با این حال، برای رشته با طول ثابت، باید از قالبی که در زیر نشان داده شده است استفاده کنید:
Dim VariableName as String * n
جایی که n تعداد کاراکترهایی را که رشته می تواند نگه دارد را مشخص می کند. برای مثال، Dim yourName به عنوان رشته * 10 به این معنی است که yourName نمی تواند بیش از 10 کاراکتر داشته باشد.
مثال 2.2
در این مثال، ما سه نوع متغیر، یعنی رشته، تاریخ و ارز را اعلام کردیم.
Private Sub CommandButton1_Click()
Dim YourName As String, BirthDay As Date, Income As Currency YourName = "Alex"
BirthDay = "1 April 1980"
Income = 1000
Range("A1") = YourName
Range("A2") = BirthDay
Range("A3") = Income
End Sub
استفاده ازOption Explicit برای کمک به ما برای ردیابی خطاها در استفاده از نام متغیرها در کد برنامه است. به عنوان مثال، اگر ما یک اشتباه تایپی مرتکب شویم، VBE یک پیغام خطای "Variable not defined" را ظاهر می کند. در واقع، Option Explicit برنامه نویس را مجبور می کند تا همه متغیرها را با استفاده از کلمه کلیدی Dim اعلام کند. استفاده از Option Explicit تمرین خوبی است زیرا از استفاده از نام متغیرهای نادرست به دلیل اشتباهات تایپی جلوگیری می کند، به خصوص زمانی که برنامه بزرگتر شود. با استفاده از Option Explicit، در زمان ما در اشکال زدایی برنامه هایمان صرفه جویی می شود.
وقتی Option Explicit در کد برنامه گنجانده شده است، باید همه متغیرها را با کلمه کلیدی Dim delar کنیم. هر متغیری که اعلام نشده یا اشتباه تایپ نشده باشد باعث می شود برنامه پیغام خطای "متغیر تعریف نشده" را باز کند. قبل از ادامه اجرای برنامه باید خطا را تصحیح کنیم
این مثال از کلمه کلیدی Option Explicit استفاده می کند و نشان می دهد که چگونه یک اشتباه تایپی ردیابی می شود.
Option Explicit
Private Sub CommandButton1_Click()
Dim YourName As String,
password As String YourName = "John"
password = 12345
Cells(1, 2) = YourNam
Cells(1, 3) = password
End Sub
اشتباه تایپی YourNam است و پیغام خطای “variable not defined” نمایش داده می شود.
پس از اعلام متغیرهای مختلف با استفاده از دستورات Dim، می توانیم مقادیری را به آن متغیرها اختصاص دهیم. قالب کلی یک تکلیف است
Variable=Expression
متغیر می تواند یک متغیر اعلام شده یا یک مقدار ویژگی کنترلی باشد. عبارت می تواند یک عبارت ریاضی، یک عدد، یک رشته، یک مقدار بولی (درست یا نادرست) و موارد دیگر باشد. در اینجا چند نمونه آورده شده است:
firstNumber=100
secondNumber=firstNumber-99
userName="John Lyan" userpass.Text = password
Label1.Visible = True
Command1.Visible = false
ThirdNumber = Val(usernum1.Text)
total = firstNumber + secondNumber+ThirdNumber
برای محاسبه ورودی از کاربر و تولید نتایج در Excel VBA، میتوانیم از عملگرهای ریاضی مختلفی استفاده کنیم. در Excel VBA، به جز + و -، نمادهای عملگرها با عملگرهای ریاضی معمولی متفاوت است، همانطور که در جدول 2.3 نشان داده شده است
مثال 2.4
Option Explicit
Private Sub CommandButton1_Click ()
Dim number1, number2, number3 as Single
Dim total, average as Double number1=Cells (1, 1).Value
number1=Cells (2, 1).Value
number3= Cells (3, 1).Value
Total=number1+number2+number3
Average=Total/3
Cells (5, 1) =Total
Cells (6, 1) =Average
End Sub
در مثال 2.4، سه متغیر به عنوان تک و دو متغیر دیگر به عنوان متغیر اعلام شده اند. Variant به این معنی است که متغیر می تواند هر نوع داده عددی را در خود جای دهد. این برنامه مجموع و میانگین سه عددی را که در سه خانه در صفحه گسترده اکسل وارد شده اند محاسبه می کند.
مثال 2.5
Option Explicit
Private Sub CommandButton1_Click()
Dim secondName As String, yourName As String
firstName = Cells(1,1).Value
secondName = Cells(2,1).Value
yourName = firstName + " " + secondName
Cells(3,1) = yourName
End Sub
در مثال بالا، سه متغیر به عنوان رشته اعلام شده است. متغیر firstName و متغیر secondName داده های وارد شده توسط کاربر را به ترتیب در سلول های (1،1) و سلول ها (2،1) دریافت می کنند. به متغیر yourName داده ها با ترکیب دو متغیر اول اختصاص داده می شود. در نهایت، yourName در سلول های (3، 1) نمایش داده می شود. انجام جمع روی رشته ها منجر به الحاق رشته ها می شود، همانطور که در شکل 2.3 زیر نشان داده شده است. اسامی در A1 و A2 به هم پیوسته و در A3 نمایش داده می شوند.