ساخت نرم افزارهای مهندسی با اکسل

مقدمه ای بر Excel VBAکلمه 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 شامل برنامه های مالی و علمی که می توانند محاسبات مالی و برنامه هایی را انجام دهند که می توانند تجزیه و تحلیل های آماری را انجام دهند. https://sevdaa.ir/product/vba-in-excel/ ویرایشگر ویژوال بیسیک در اکسلدو راه وجود دارد که می توانید آموزش برنامه نویسی در اکسل VBA را در MS Excel شروع کنید. اولین مورد این است که یک دکمه فرمان را روی صفحه گسترده قرار دهید و با کلیک بر روی دکمه فرمان برنامه نویسی را شروع کنید تا ویرایشگر ویژوال بیسیک راه اندازی شود. راه دوم این است که ویرایشگر ویژوال بیسیک را با کلیک بر روی منوی ابزارها اجرا کنید، سپس از منوی کشویی گزینه Macro را انتخاب کنید و ویرایشگر ویژوال بیسیک را انتخاب کنید. اجازه دهید ابتدا با دکمه فرمان شروع کنیم. برای قرار دادن یک دکمه فرمان بر روی صفحه گسترده MS Excel، روی آیتم View در نوار منوی MS Excel کلیک کنید و سپس بر روی نوار ابزار کلیک کنید و در نهایت جعبه ابزار کنترل را انتخاب کنید که پس از آن نوار جعبه ابزار کنترل ظاهر می شود، همانطور که در شکل نشان داده شده است.سپس بر روی دکمه فرمان کلیک کنید و آن را مانند تصویر در صفحه گسترده بکشید MS Excelشکل 1.1: نمایش جعبه ابزار کنترل در MS Excel.شکل 1.2: دکمه فرمان در حالت طراحیاکنون دکمه فرمان را انتخاب کرده و مطمئن شوید که دکمه طراحی در سمت چپ جعبه ابزار کنترل فشار داده شده است. سپس بر روی دکمه فرمان کلیک کنید تا ویرایشگر ویژوال بیسیک راه اندازی شود. عبارات را مطابق شکل 1.3 وارد کنید. بیایید کد را در اینجا بنویسیم:مثال 1.1Private 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 هستید می توانید با کلیک بر روی دکمه طراحی از حالت طراحی خارج شوید و سپس بر روی دکمه فرمان کلیک کنید.شکل 1.3: IDE ویرایشگر ویژوال بیسیک در MS Excelاجرای VBA فوق خروجی را همانطور که در شکل 1.4 نشان داده شده است به شما می دهدشکل 1.4کد های VBA اکسلنوشتن کد VBA اکسل تقریباً دقیقاً مشابه نوشتن کد در ویژوال بیسیک است، به این معنی که باید از سینتکس های (به مجموعه قوانین نوشتاری درون یک زبان برنامه نویسی، Syntax (سینتکس) می گویند) مشابه ویژوال بیسیک استفاده کنید. با این حال، کدهایی برای استفاده در MS Excel طراحی شده اند، مانند استفاده از شی یا تابعی به نام Range. این تابعی است که مقدار یک سلول یا محدوده ای از سلول ها را در صفحه گسترده MS Excel مشخص می کند. فرمت استفاده از Range به شرح زیر است:Range(“cell Name”).Value=K or Range(“Range of Cells”).Value=KWhere Value is the property of Range and K can be a numeric value or a stringمثال 1.2Private Sub CommandButton1_Click () Range (“A1”).Value= “VBA”End Subمثال بالا وقتی کاربر دکمه فرمان را فشار می دهد، متن "VBA" را در سلول A1 صفحه گسترده MS Excel وارد می کند. همانطور که در مثال 1.3 نشان داده شده است، می توانید از Range بدون خاصیت Value نیز استفاده کنید:Example 1.3Private Sub CommandButton1_Click () Range ("A1") = 100End Subدر مثال بالا، با کلیک بر روی دکمه فرمان، مقدار 100 را در سلول A1 صفحه گسترده MS Excel وارد کنید. مثال زیر نحوه وارد کردن مقادیر را به یک محدوده از سلول ها نشان می دهد:Example 1.4Private Sub CommandButton1_Click () Range ("A1:A10") = 100End Subکار با متغیرها در Excel VBAمفهوم متغیرهامتغیرها مانند صندوق های پستی در اداره پست هستند. محتویات متغیرها هر از گاهی تغییر می کند، درست مانند صندوق های پستی. در Excel VBA، متغیرها مناطقی هستند که توسط حافظه کامپیوتر برای نگهداری داده ها اختصاص داده شده است. مانند صندوق های پستی، هر متغیر باید یک نام داده شود. برای نامگذاری یک متغیر در Excel VBA، باید مجموعه ای از قوانین را دنبال کنید، به شرح زیر:نام متغیرهاقوانین زیر هنگام نامگذاری متغیرها در VBA آمده است❖ باید کمتر از 255 کاراکتر باشد❖ هیچ فاصله ای مجاز نیست❖ نباید با عدد شروع شود❖ پریود مجاز نمی باشداعلان متغیرهادر VBA، ما باید متغیرها را قبل از استفاده آنها با تخصیص نام ها و انواع داده ها اعلام کنیم. انواع داده های VBA زیادی وجود دارد که می توان آنها را به طور کلی به دو نوع تقسیم کرد، یعنی انواع داده های عددی و انواع داده های غیر عددی.انواع داده های عددیانواع داده های عددی انواع داده هایی هستند که از اعداد تشکیل شده اند که می توان آنها را به صورت ریاضی با عملگرهای مختلف حسابی استاندارد مانند جمع، تفریق، ضرب، تقسیم و غیره محاسبه کرد. در VBA داده های عددی به 7 نوع تقسیم می شوندانواع داده های غیر عددیشما می توانید متغیرها را به صورت ضمنی یا صریح اعلام کنید. برای مثال sum=text1.text به این معنی است که متغیر sum به طور ضمنی و آماده دریافت ورودی در textbox1 اعلام شده است. نمونه های دیگر از اعلام ضمنی عبارتند از volume=8 و label=”Welcome”. از طرف دیگر، برای اعلان صریح، متغیرها معمولاً در بخش عمومی پنجره کد با استفاده از دستورات Dim اعلان می شوند. در اینجا نحو است:متغیر Name را به عنوان DataType کم کنیدمثال 2.1Dim password As String Dim yourName As String Dim firstnum As Integer Dim secondnum As Integer Dim total As IntegerDim 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") = IncomeEnd Subشکل 2.1: صفحه خروجی برای مثال 2.2استفاده از Option Explicitاستفاده ازOption Explicit برای کمک به ما برای ردیابی خطاها در استفاده از نام متغیرها در کد برنامه است. به عنوان مثال، اگر ما یک اشتباه تایپی مرتکب شویم، VBE یک پیغام خطای "Variable not defined" را ظاهر می کند. در واقع، Option Explicit برنامه نویس را مجبور می کند تا همه متغیرها را با استفاده از کلمه کلیدی Dim اعلام کند. استفاده از Option Explicit تمرین خوبی است زیرا از استفاده از نام متغیرهای نادرست به دلیل اشتباهات تایپی جلوگیری می کند، به خصوص زمانی که برنامه بزرگتر شود. با استفاده از Option Explicit، در زمان ما در اشکال زدایی برنامه هایمان صرفه جویی می شود.وقتی Option Explicit در کد برنامه گنجانده شده است، باید همه متغیرها را با کلمه کلیدی Dim delar کنیم. هر متغیری که اعلام نشده یا اشتباه تایپ نشده باشد باعث می شود برنامه پیغام خطای "متغیر تعریف نشده" را باز کند. قبل از ادامه اجرای برنامه باید خطا را تصحیح کنیماین مثال از کلمه کلیدی Option Explicit استفاده می کند و نشان می دهد که چگونه یک اشتباه تایپی ردیابی می شود.Option ExplicitPrivate Sub CommandButton1_Click()Dim YourName As String, password As String YourName = "John"password = 12345 Cells(1, 2) = YourNam Cells(1, 3) = passwordEnd Subاشتباه تایپی YourNam است و پیغام خطای “variable not defined” نمایش داده می شود. شکل 2.2: پیغام خطا به دلیل خطای تایپیتخصیص مقادیر به متغیرهاپس از اعلام متغیرهای مختلف با استفاده از دستورات 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، می‌توانیم از عملگرهای ریاضی مختلفی استفاده کنیم. در Excel VBA، به جز + و -، نمادهای عملگرها با عملگرهای ریاضی معمولی متفاوت است، همانطور که در جدول 2.3 نشان داده شده استمثال 2.4Option ExplicitPrivate Sub CommandButton1_Click ()Dim number1, number2, number3 as Single Dim total, average as Double number1=Cells (1, 1).Valuenumber1=Cells (2, 1).Value number3= Cells (3, 1).Value Total=number1+number2+number3 Average=Total/3Cells (5, 1) =TotalCells (6, 1) =Average End Subدر مثال 2.4، سه متغیر به عنوان تک و دو متغیر دیگر به عنوان متغیر اعلام شده اند. Variant به این معنی است که متغیر می تواند هر نوع داده عددی را در خود جای دهد. این برنامه مجموع و میانگین سه عددی را که در سه خانه در صفحه گسترده اکسل وارد شده اند محاسبه می کند.مثال 2.5Option ExplicitPrivate Sub CommandButton1_Click()Dim secondName As String, yourName As String firstName = Cells(1,1).ValuesecondName = Cells(2,1).ValueyourName = firstName + " " + secondNameCells(3,1) = yourNameEnd Subدر مثال بالا، سه متغیر به عنوان رشته اعلام شده است. متغیر firstName و متغیر secondName داده های وارد شده توسط کاربر را به ترتیب در سلول های (1،1) و سلول ها (2،1) دریافت می کنند. به متغیر yourName داده ها با ترکیب دو متغیر اول اختصاص داده می شود. در نهایت، yourName در سلول های (3، 1) نمایش داده می شود. انجام جمع روی رشته ها منجر به الحاق رشته ها می شود، همانطور که در شکل 2.3 زیر نشان داده شده است. اسامی در A1 و A2 به هم پیوسته و در A3 نمایش داده می شوند.شکل 2.3: الحاق رشته ها