برنامه نویسی در اکسل

صفحه اصلی کارگروهها >> پروژه های دانشجویی  >> برنامه نویسی در اکسل
دانش فیروزی

دانش فیروزی

در کارگروه: پروژه های دانشجویی
تعداد ارسالي: 4
13 سال پیش در تاریخ: دوشنبه, شهريور 21, 1390 19:8

Excel برنامه نویسی در


برنامه نویسی در محیط اکسل برای تازه کارها کار سختی است و بهمین دلیل می توانید از برنامه های آماده نوشته شده در به زبان VBA اکسل، در اینترنت استفاده نمایید. برای شروع کار باید با اصطلاحات Subroutine - Module  آشنا باشید.


تعریف سابروتین در برنامه نویسی


یک برنامه بزرگ از سابروتین ها Subroutine  تشکیل شده است و کوچکترین واحد یک برنامه را می تواند سابروتین نامید، در توضیح بیشتر باید گفت که یک سابروتین در واقع از دستوراتی تشکیل شده است که همه آنها ، یعنی همه دستورات موجود در یک سابروتین با هم اجرا می شود و باعث انجام کاری خواهند شد.


نامهای procedure, method, function و routine همه نامهای دیگری برای سابروتین هستند و معادل آن در زبان فارسی "رویه" است.


در زبان برنامه نویسی ویژوال بیسیک اکسل اگر بخواهید دستوری را بنویسید که مثلا عدد 2+2 را محاسبه کنید ، باید این دستور را در داخل یک سابروتین قرار دهید:


Sub Test()


a = 2 + 2


End Sub


در مثال ساده بالا شما با کلمه SUB مواجه می شوید که شروع سابروتین و پایان یک سابروتین را نشان می دهد و هر گاه این سابروتین که اسم آن Test است را اجرا کنید ، تمامی دستورات این سابروتین خواهند و پردازش و در نهایت اجرا می شوند. در ادامه این آموزش با نحوه اجرای یک سابروتین نوشته شده در محیط VBA اکسل آشنا خواهید شد.


 


تعریف ماژول:


ماژولها در فایل اکسل شما ذخیره میشوند و شما می توانید آنها را ویرایش کنید، هر ماژول می تواند حاوی چندین سابروتین باشد.


درج یک ماژول و سابروتین در VBA:


1- در ابتدا با زدن کلید Alt+F11 وارد محیط VBA اکسل شوید.


از منوی Insert گزینه Module را انتخاب کنید تا یک ماژول ایجاد شود. در سمت راست صفحه شما قاب Project Explorer را اگر مشاهده کنید خواهید دید که ماژول شما با نام Module1 نمایش داده می شود . (اگر Project Explorer را نمی بینید از کلید Ctrl+R استفاده نمایید)


3- سابروتین خود را بنویسید.



ذخیره فایل اکسل حاوی برنامه


در اکسل 2007 اگر فایل خود را با پسوند XLSX ذخیره نمایید ، تمامی برنامه های (ماکروها) یا به عبارت صحیح تر تمامی ماژولها پاک می شوند. در واقع این اقدام امنیتی اکسل 2007 است که فایل حاوی یک برنامه وِیژوال بیسیک را با پسوند XLSA ذخیره می کند.


شما در اکسل 2003 نمی توانستید تعیین کنید که آیا فایل حاوی ماکرو - ماژول - برنامه (همه این اصطلاحات دارای یک معنی هستند) است یا نه و حتما باید فایل را باز می کردید تا متوجه این موضوع می شدید.



در شکل زیر تفاوت Icon فایلهای اکسل 2007 که حاوی ماکرو (برنامه) است با Icon یک فایل عادی اکسل 2007 را مشاهده می نمایید.


 


باز کردن فایل حاوی برنامه ویژوال بیسیک (ماکرو)


اکسل به صورت پیش فرض برنامه موجود در یک فایل را غیر فعال (Disable) می کند زیرا ممکن است که این برنامه به نوعی یک ویروس باشد و این موضوع یک اقدام پیشگرانه است که در تمامی نرم افزارهای خانواده آفیس از جمله اکسل وجود دارد.


بعد از اینکه فایل اکسل حاوی برنامه VBA را بازکردید، با زدن گزینه Enable Macro برنامه را فعال خواهید کرد و می توانید ماکروهای آن فایل را اجرا کنید و در صورتیکه این کار انجام نشود، قادر به اجرا ماکرو نخواهید بود.


سپس گزینه Enable this Content بعد از باز کردن فایل در اکسل2007 بر روی دکمه را بزنید



 


اجرای یک برنامه نوشته شده در محیط VBA  اکسل


همانطور که در بالا اشاره شد کوچکترین واحد یک برنامه سابروتین است و برای اجرای یک سابروتین کافیست در اکسل کلید Alt+F8 را بزنید تا پنجره زیر که لیستی از تمامی سابروتین ها در آن است را مشاهده نمایید و برای اجرای یک سابروتین ، اول آنرا انتخاب کنید و سپس کلید   


اگر مایل باشید می توانید برای اجرای ماکرو (سابروتین) در اکسل یک Shortcut key (یا Hotkey) نیز تعریف کنید. مثلا کلید Ctrl+R ، برای اینکار در شکل بالا روی گزینه Options کلیک کنید.


 


 


 


 


 


 


 


 


 


 


 


 


چگونه می‌توان در اکسل تابعی را خودمان بنویسیم؟


 


مقدمه


دقیقا یادم است که روزی قرار ملاقاتی با یکی از اساتید اکسل داشتم ، ایشان استاد دانشگاه بودند و گویا دوتا هم مدرک دکتری . تقریبا یادم نیست که چه صحبتهایی شد اما اینرا خوب یادم است که بعد از آن ملاقات بود که قویا می‌خواستم خودم در اکسل یک تابع بنویسم ، خوب از کجا می‌دانستم که می‌شود اینکار را کرد ؟


فکر کنم که روزی فایلی را از اینترنت گرفته بودم و بعد از نصب آن وقتی به Insert à function رفته بودم گزینه‌ای به نام User Function  را دیدم و همان موقع شصتم خبر دار شد که بله می‌شود خودمان توابع دلخواهمان را در اکسل بنویسیم . اما چطوری ؟


 


 





تابع چیست ؟


در دبیرستان ساعتها وقت ما را همین کلمه گرفت و انصافا من با کامپیوتر بود که تازه فهمیدم تابع چیست. در واقع تابع یک عملگری است که چیزی را می‌گیرد و روی آن کاری را انجام می‌دهد و بعد چیز دیگری که خروجی می‌گوییم را به ما می‌دهد.


مثلا همین تابع SUM را در نظر بگیرید ، چند تا عدد می‌گیرد و جمع آنها را به ما می‌دهد.


در زیر چند اسلاید که مربوط به توابع است را می‌بینید.


 



 




 


اکسل بیش از 350 تابع دارد که اکثر کارهایی که ممکن است بخواهیم انجام دهیم با این توابع قابل انجام است ، در ضمن ترکیب این توابع نیز برای ما امکانات فراوانی را بهمراه دارد و اینرا هم مد نظر داشته باشیم که شرکتی به عظمت ماکروسافت و تجربه چندین ساله‌اش مطمئنا نیازهای تمامی‌ کاربران در سطح دنیا را در نظر داشته و تا آنجایی که امکان داشته توابع مختلف را پیش بینی کرده است .


توابع جدید به چه کاری می‌آیند


البته این سوال ممکن است به ذهن شما متبادر شود که چرا باید تابع جدیدی اضافه کرد.


شاید دلایل زیر بتواند گوشه‌ای از ارزش تابع را برای ما بیان کند:



  • جلوگیری از کارهای تکراری در اکسل

  • انجام محاسبات پیچیده

  • دسترسی به کلیه امکانات یک زبان برنامه نویسی مانند ویژوال بیسک

  • به اشتراک گذاشتن توابع با سایر کاربران

  • استفاده سریعتر از نرم افزار

  • جلوگیری از اشتباهات کاربران


آشنایی با ویژوال بیسیک


برای شروع بهتر است کمی در خصوص ویژوال بیسیک بدانیم . VB یک زبان برنامه نویسی بسیار متداول است. برای اینکه یک تابع جدید نوشته شود لازم است که کمی با برنامه نویسی با این زبان آشنا باشیم. برای این منظور پیشنهاد می‌کنم که نرم افزار VB را تهیه کنید و بعد از آن هم چند CD آموزشی و یک کتاب  . با کمی تمرین با اصول ابتدایی این زبان آشنا خواهید شد و قول می‌دهم کار بسیار ساده تر از آنچه فکر می‌کنید باشد.


لازم به ذکر است که نسخه جدید نرم افزار VB به نام VB.NET نیز وجود دارد که امکان استفاده آن در OFFICE 12 که نسخه بعدی افیس است گنجانده شده و بد نیست بدانیم که VB.NET در واقع قابلیتهای زبان برنامه نویسی C# را دارد.


 



شما برای استفاده از VB در اکسل نیاز ندارید که نرم افزار VISUAL BASIC را نصب کنید ، همراه با نصب افیس خود این نرم افزار نیز نصب می‌شود.


در ضمن VBA همان زبان برنامه نویسی ویژوال بیسک می‌باشد که در آن قابیلیتهای ویژه‌ای برای کار با اکسل،اکسس، ورد و ... گنجانده شده است.



 


گام اول ورود به محیط ویژوال بیسیک


ابتدا بایستی وارد محیط VB شویم. برای اینکار چندین راه وجود دارد که عبارتند از:



  • زدن کلید ALT+F11 

  • از منوها : Tools à Macro à Visual Basic Editor

  • از Toolbar  :


 


محیط ویژوال بیسک



 


گام دوم ایجاد یک ماژول


شما باید دستورات تابع خود را در یک Module (ماژول) بنویسید ،  از منوی Insert گزینه Module را بزنید . و اگر به project explorer نگاه کنید متوجه خواهید شد که یک ماژول جدید ایجاد شده است.











نام ماژول جدید













اگر این پنجره نیست کلید Ctrl+R را بزنید





گام سوم ایجاد یک تابع درماژول


یک تابع در ویژوال بیسیک قواعد استانداردی دارد که شما باید از این قواعد اطاعت کنید .


اولین قانون آن این است که یک تابع با دستورات استانداردی شروع و به پایان می‌رسد.


قانون دوم این است که هر تابع یک نوع دارد و ورودیهای یک تابع در داخل پرانتز مشخص می‌شوند.


قانون سوم ، نوع داده ورودیها (و خود تابع) باید مشخص شود.


این دستورات عبارتند از :


Private Function Test(Num As Integer) as Double


 


End Function


نام تابع ما test است و عبارت داخل پرانتز می‌گوید که این تابع یک ورودی دارد که نام آن ورودی Num است و integer  بیانگر آن است که این ورودی عددی صحیح است . (-32,768  تا 32,767 )


خروجی تابع از نوع double است و البته گذاشتن آن در همه موارد الزامی نیست ، گرچه بهتر است که مشخص شود. (برای اطلاع بیشتر به کتابهای برنامه نویسیم مراجعه کنید.)


عبارت Private Function نشانگر شروع تابع و End Function برای پایان تابع است.


 


 


گام چهارم – نوشتن تابع در محیط VBA


فرض کنید می‌خواهیم تابعی بنویسیم که یک عدد را بگیرد و آنرا در 10 ضرب کند!


اول باید تصمیم بگیریم که اسم این تابع را چه بگذاریم ، در حقیقت این اسم همان کلمه‌ای است که در اکسل برای استفاده از این تابع استفاده خواهیم کرد.


خوب اسم آنرا Test می‌گذاریم و می‌دانیم که این تابع باید یک ورودی داشته باشد و خوب چون به تازگی با نوع عدد Integer  آشنا شدیم (عدد صحیح) نوع این ورودی را هم Integer می‌گذاریم.


باید نامی برای این ورودی در نظر بگیریم ، این نام نباید یک نام آشنا ! برای VB باشد و بهتر است نامی با مسما در نظر بگیریم ، اینجا اسم این ورودی را Num می‌گذاریم.


پس در ماژول خود خواهیم نوشت :


 


Private Function Test(Num As Integer)


 


    Test = Num * 10


 


End Function


 



 


حال از ووو خارج می‌شویم ( Alt + Q) و به اکسل بر می‌گردیم .


 


 


گام پنجم - استفاده از تابع


مثل توابع استاندارد اکسل می‌توان از این تابع هم استفاده کرد مثلا بنویسید :


= test(8)


= test(A1)


 



اگر به جای کلمه  Private  ، Public بنویسیم، می‌توانیم نام تابع جدیدمان را در UserFunction ببینیم.




 


مثال 1) تابع بدست آوردن شماره رنگ یک سلول و رنگ قلم آن سلول


می‌خواهیم تابعی بنویسیم که شماره رنگ یک سلول (fill color) یا شماره رنگ قلم (font color) را مشخص کنیم.


(می‌دانیم که در اکسل از 56 رنگ می‌توان استفاده کرد که هر رنگ یک کد دارد مثلا کد رنگ قرمز 3 و آبی 5 است.)



  • نام تابع : CellColor

  • ورودی : تابع دو ورودی دارد ، ورودی اول آدرس سلول است و ورودی دوم مشخص می‌کند که ما می‌خواهیم رنگ زمینه سلول را داشته باشیم یا رنگ قلم آنرا .
    اگر ورودی دوم عبارت
    fill بود رنگ زمینه مد نظر است و اگر font بود رنگ قلم.

  • نام ورودی اول MyRange و از نوع Range  است

  • نام ورودی دوم Mode و از نوع String است

  • اگر ورودی دوم داده نشده بود و یا مقادیری غیر fill و font بود ، خروجی تابع یک خطا به شکل #Mistake  باشد .


 


برای نوشتن این تابع از دستور شرطی IF به صورت زیر استفاده می‌کنیم :


Public Function Colorindex(MyRange As Range, Mode As String)


   


    Application.Volatile True


   


    If Mode = "font" Then


     Colorindex = MyRange.Font.Colorindex


    ElseIf Mode = "fill" Then


     Colorindex = MyRange.Interior.Colorindex


    Else


     Colorindex = "#Mistake"


    End If


End Function


عبارت As Range بیان می‌کند که ورودی اول یک خانه است.


عبارت String As بیان می‌کند که ورودی دوم یک رشته (متن – غیر عدد) است .


 



دستور Application.Volatile True  به اکسل می‌گوید که هر وقت هر خانه‌ای را مجدد محاسبه کرد، باید تابع ما را نیز مجدد محاسبه کند .


( این حالت مانند تابع now() خود اکسل است که زمان را مرتب محاسبه و نشان می‌دهد.) زدن کلید F9 نیز باعث می‌شود که این تابع مجدد محاسبه شود.


در اکسل 2007 لازم به اینکار نیست .


توجه داشته باشید که توابعی که به صورت Volatile تعریف می‌شوند باعث کند شدن محاسبات نرم افزار اکسل می‌گردند.



 


 


حال خانه A1 را به رنگ قرمز و متن آنرا زرد می‌کنیم و تابع را روی آن آزمایش می‌کنیم.


فرمولهای بکار رفته در خانه B1 و B2 را به ترتیب در D1 و D2 مشاهده می‌کنید.


 




























 



A



B



C



D



1



far



13



 



=colorindex(A1,"font")



2



 



6



 



=colorindex(A1,"fill")




 


 


مثال 2) سلولهایی را که رنگ آنها . . . را با هم جمع بزنید.


بهتر است از مثال قبل یک استفاده کاربردی کنیم. مثلا در یک محدوده می‌خواهیم سلولهای قرمز رنگ را با هم جمع بزنیم. (این سلولها می‌توانند با Conditional Formationg قرمز شده باشند.)


 


Public Function SumByColor(InRange As Range, WhatColorIndex As Integer) As Double


   


     Application.Volatile True


    


For Each C In InRange.Cells


       


    If C.Interior.Colorindex = WhatColorIndex Then


        SumByColor = SumByColor + C.Value


    End If


   


Next C


   


End Function



  • نام تابع : SumByColor و نوع آن را Double در نظر گرفتیم.

  • ورودی‌ها: محدوده که نام آنرا InRange و شماره رنگ  که نام آنرا  WhatColorIndex گذاشتیم و از نوع عدد صحیح است.

  • عبارت For Each C InRange دارد می‌گوید که C یک سلول از سلولهای محدود InRange است .


 


مثال 4- تابعی ایجاد کنید که اختلاف بزرگترین و کوچکترین عدد یک محدوده را حساب کند.


البته اینکار با خود اکسل بسیار ساده است و کافی است که فرمول =max(   ) – Min(   )  را بکار ببریم ، اما هدف این مثال اینست که نشان دهد چطور می‌توان در محیط ویژوال بیسیک از توابع استاندارد اکسل استفاده کرد.


 


Public Function max_min(InRange As Range) As Double


 


    Application.Volatile True


 


MaxNum = Application.WorksheetFunction.Max(InRange)


MinNum = Application.WorksheetFunction.Min(InRange)


 


max_min = MaxNum - MinNum


 


End Function


همانطور که می‌بینید با دستور application.worksheetfunction.xxx  که به جای xxx نام تابع استاندارد اکسل را می‌نویسیم.


 


مثال 4- می‌خواهیم تابعی بنویسیم که بتواند مقدار هزار، میلیون و میلیارد را در یک عدد تشخیص دهد و سپس کلمه "تومان" یا "ریال" را هم  به آن عدد اضافه کند . در صورتی که عدد معتبر نبود پیغام خطای مناسبی را اعلام کند.


مثلا اگر عدد 15000  وارد شد بنویسید : 15 هزار ریال (یا 15 هزار تومان)


با این مثال قصد داریم ورودیهای Optional را مرور کنیم. مثلا اگر تابع Vlookup را در نظر بگیریم ، آخرین ورودی آن انتخابی (optional) است ، بدین معنی که اگر کاربر مقداری را وارد نکند به طور پیش فرض مقدار True را در نظر می‌گیرد و در ضمن اگر کاربر خواست می‌تواند ورودی را به تابع بدهد.


حالت ساده این کار در VB به این صورت است که می‌نویسیم :


 


Public Function Test(Num as Integer, optional Num as Integer = True)


 


تفسیر  کد بالا به این صورت است که تابعی داریم به نام Test با دو ورودی.


ورودی اول آن مقداری است به نام Num و از نوع عدد صحیح است .


ورودی دوم آن مقداری است اختیاری ، یعنی کاربر می‌تواند ورودی دوم را ندهد و با تعریف بالا مقدار پیش فرض آن True در نظر گرفته شده که اگر کاربر مقداری را صریحا به تابع اعلام نکند ، آنوقت مقدار دوم True در نظر گرفته خواهد شد و کار تابع با این مقدار شروع می‌شود.


اگر ورودی دوم داده نشود یا 1 یا True اعلام شود ، کلمه ریال در نظر گرفته خواهد شد.


اگر ورودی دوم False یا 0  داده شود ، کلمه تومان در نظر گرفته خواهد شد.


 


حال به نوشتن تابع مذکور می‌پردازیم :


 


Public Function PersianCurrency(MyNumber As String, Optional Mode As Boolean = True)


   


    Application.Volatile True


 


If Val(MyNumber) >= 1000 Then


    amount$ = Mid(Trim(MyNumber), 1, Len(MyNumber) - 3)


    Cur$ = "هزار"


End If


 


If Val(MyNumber) >= 1000000 Then


    Temp$ = Mid(Trim(MyNumber), 1, Len(MyNumber) - 6)


        Cur$ = "میلیون"


End If


 


If Val(MyNumber) >= 1000000000 Then


    Temp$ = Mid(Trim(MyNumber), 1, Len(MyNumber) - 9)


        Cur$ = "میلیارد"


End If


 


If Mode = True Then Crs$ = "ریال" Else Crs$ = "تومان"


 


PersianCurrency = Temp$ & Cur$ & " " & Crs$


 


If Val(MyNumber) = 0 Then


    PersianCurrency = "مقدار یافت نشد"


End If


 


End Function


تست و خروجی این تابع را در مثال زیر مشاهد می‌کنید .


تذکر : مقدار True همان 1 است و مقدار Flase همان 0 است . (یعنی از هر کدام از این مقادیر می‌توان استفاده کرد.)


 











































 



A



B



C



1



10000



10هزار ریال



=Persiancurrency(A1,1)



2



250000



250هزار تومان



=Persiancurrency(A2,FALSE)



3



15000000



15میلیون ریال



=Persiancurrency(A3,1)



4



15000001



15میلیون تومان



=Persiancurrency(A4,FALSE)



5



 far



مقدار یافت نشد



=Persiancurrency(A5,1)




 


 


 


ایجاد دکمه جدید در صفحه اکسل:


از ابزار های DESIGN MODE  در منوی ماکر COMMAND BUTTON  را انتخاب می کنیم دکمه جدید را انتخاب کرده و بر روی آن دابل کلیک می کنیم تا صفحه ویژوال بیسیک باز شود.


در صفحه ایجاد شده دستور زیر را وارد می کنیم:


Range("A1:A10").Value = 10


 


با این دستور به اکسل گفته شده که A1 تا A10   را گرفته و به آن مقدار 10 را بدهد.


از عبارت  RANGE("@") برای مشخص کردن ناحیه ای در اکسل و از عبارت VALUE=.  برای تغییر مقدار سلولها استفاده می کنیم.


حال از این صفحه خارج شده و بر روی دکمه گونیا(در منوی ویژوال بیسیک نوار خاکستری رنگ بالای صفحه) کلید کرده و EXIT DESIGN MODE  را می زنیم.


بر روی دکمه جدید راست کلید کرده و مشخصات را را انتخاب کرده و در این حالت مشخصات دکمه از قبیل رنگ و نام و ... را می توان تغییر داد.


حال از این صفحه خارج شده و بر روی دکمه گونیا(در منوی ویژوال بیسیک نوار خاکستری رنگ بالای صفحه) کلید کرده و EXIT DESIGN MODE  را می زنیم.


وقتی که از حالت DESIGN خارج شدیم حال بر روی دکمه کلیک کرده و مشاهده می کنیم که درسلهای مشخص شده ارزش عددی 10 را قرار می دهد.


می توان به جای 10 یک عبارت را در داخل "   "  قرار داد و در این حالت به جای 10 آن عبارت نوشته می شود.


توجه: در صورتی که از علامت '  در ابتدای یک خط برنامه نویسی در محیط VB استفاده شود آن خط سبز شده و عملیاتی بر روی آن خط اجرا نخواهد شد. این خط اصطلاحا Comment (توضیحات)‌نامیده می شود. Comment حالت اجرایی ندارد و از آن برای ارایه توضیحات استفاده میشود. Comment ها به خوانایی برنامه بسیار کمک میکنند.


 


دستور زیر را می نویسیم:


Range("D1").Value = Range("B1") + Range("C1")


دستور زیر را در یک سط دیگر می نویسیم:


Range("E1").Value = "=A1+A2"


ملاحظه می شود که در سطر 1E ارزشهای موجود در A1 و A2 جمع زده می شود.


نکته : به علامت = در داخل کوتیشن توجه شود.


اگر به محیط اکسل بازگردیم و درسلولهایی که فرمول نوشته می شود توجه کنیم دیده می شود که محتوای این سلولها با علامت = شروع می شود. یعنی اکسل به محتوای یک سلول نگاه میکند اگر با علامت = شروع شود آنرا فرمول تلقی می کند و نه مقدار. پس ما هم از همین روش استفاده میکنیم و وقتی در نظر داریم که فرمولی را در یک سلول وارد کنیم می بایست با علامت = شروع کنیم.


دستور SELECT


با انجام این دستور سلهای مورد اشاره انتخاب می شود می توان بعد از  RANGE از دستور بالا استفاده نمود.


دستور زیر را وارد کنید:


Range("F1:F10").Select


و دکمه را RUN  می کنیم.ملاحظه می شود که سطرهای مورد اشاره های انتخاب شد.


می توان به جای : از علامت ,  استفاده نمود که در این حالت به معنی AND می باشد.


مواردی که در بالا اشاره گردید خلاصه ای از سه دستور RANGE VALUE SELECT بود که اشاره ای مختصر به آن گردید.


مطالبی که ارایه شد مقدمه ای  بود تا آمادگی لازم برای ورود به مبحث برنامه نویسی ایجاد شود.


 


 


1. شروع برنامه نویسی


روشهای مختلفی برای شروع  و ایجاد یک برنامه با VBA وجود دارد. روش اصلی و مستقیم  نوشتن کدها در داخل  ویرایشگر VB  یا همان     VBE  می‌باشد. یک روش ساده دیگر نیز وجود دارد و آن ایجاد یک command button بر روی صفحه گسترده محیط اکسل و شروع برنامه نویسی با کلیک بر روی  آن است. کار را با روش اول شروع می‌کنیم


1.1        روش اصلی: ایجاد و اجرای یک برنامه در VBE


برای ایجاد یک برنامه در محیط برنامه نویسی اکسل مراحل زیرانجام می‌شود:


1 ورود به محیط برنامه نویسی یا همان Visual Basic Editor


 برای انجام اینکار چند روش وجود دارد:


·        استفاده از کلیدهای میانبر:  F11  + ALT ‌


·        استفاده از منوی اکسل:  Tools-> Macro-> Visual Basic Editor


·        استفاده از ToolBar یا همان نوار ابزار Visual Basic و فشردن آیکون Visual Basic Editor


به هر حال با یکی از روشهای فوق وارد محیط برنامه نویسی می‌شویم.


2- ایجاد Module: ورود به  منوی  Insert  و انتخاب گزینه Module  


3- ایجاد یک رویه یا Sub Procedure


نوشتن فرمان (کلمه کلیدی)  Sub ‌ و سپس نام برنامه


فشردن دگمه  Enter   


بلافاصله بطور اتوماتیک فرمان End Sub  در یک خط جدید اضافه می‌شود.


4- نوشتن کدهای برنامه VBA: کدهای برنامه را خط به خط  بین فرمانهای Sub  و End Sub می‌نویسیم.


 


 به عنوان مثال:


Sub MyProgram()


Range("A1:A10").Value = "Visual Basic For Applications"


Range("A11")=10


Range("B11").Value = 20


Range("C11").Value = "=A11+B11"


End Sub


5- اجرای برنامه : برای اجرای برنامه چندین روش وجود دارد


·         فشردن کلید F5


·         فشردن آیکن Rub Sub/User Form از   Toolbar


·         بازگشت به محیط   Excel و استفاده از F11  + ALT 1.2        روش دیگر: ایجاد یک برنامه با استفاده از command button


در این روش مراحل زیر را انجام می دهیم


 6- ایجاد command button


برای قرار دادن  command button بر روی محیط اکسل مسیر زیر را طی می‌کنیم:


View منوی  àToolbaràControl ToolBox


(البته اگر قبلا نوار ابزار Visual Basic Editor نیز فعال شده باشد میتوانید Control ToolBox را بطورمستقیم از آن انتخاب کنید.)


بعد از طی مسیر فوق Control ToolBox ظاهر میشود. command button را انتخاب و آنرا بر روی صفحه گسترده محیط اکسل اکسل قرار میدهیم. یک دگمه در محیط اکسل ظاهر میشود.



  نوشتن کدهای VBA:


 با کلیک کردن بر روی command button  بلافاصله  Visual Basic Editor یا  همان  VBE  ظاهر می‌شود. بلافاصله میتوانید دستورات خود را همانند شکل تایپ کنید. (شکل بعدی)











با دقت در این کدهای VBA ملاحظه می‌شود که:


دستور اول مقدار(Value) سلولهای A1 تا  A10را با عبارت "Visual Basic for Application" پر می‌کند.


دستور بعدی نیز حاصل جمع سلولهای  A11  و B11 را در سلول C11 قرار میدهد.


دستور آخر نیز مقدار سلول D11 را نیز با روش دیگری برابر با حاصلجمع A11  و B11 قرار میدهد. با اندکی دقت متوجه می‌شویم که این دستور با دستور قبلی متفاوت است.


 خروجی و رابط برنامه




اجرای برنامه:


 برای اجرای این برنامه به محیط اکسل برمی‌گردیم. (میتوان از F11  +   ALT ‌نیز استفاده کرد). با فشردن آیکن Exit Design Mode   از    Control Toolbox از حالت طراحی خارج می‌شویم. پس از آن با کلیک بر روی  command button برنامه اجرا می‌شود که خروجی آن در شکل نشان داده شده است.


دستور CELLS:


این دستور با استفاده از مختصات سلولها آنها را مشخص میکند. به عنوان مثال  CELLS(2,5)  سطر 2 و ستون 5 یعنی E2را مشخص می کند.


در دستور: 'Cells(2,5).Value = 15 در سل 2و5 ارزش 15 را قرار می دهد


 


 


دو دستور زیر یک مفهوم را در بر دارند:


Cells(2,5).Select


RANGE("E2").SELECT


در دستور زیر


Range(Cells(2, 5), Cells(1, 5)).Value = 10


 در سلهای مشخص شده ارزش 10 را می گذارد


دستور:


Range(("A1"), Cells(1, 5)).Value = 10


یک دستور ترکیبی می باشد. که هم از Range استفاده شده و هم از دستور CELLS


ملاحظه شد که به 2 صورت می توان سلها را از دو دستور  دستورRANGE  و دستور CELLS  انتخاب کرد و از علامتهای با علامتهای ":" یا  " ," استفاده نمود.


 


یادداشت: راهنمای جامعی برای کار با سلولها و ناحیه تهیه شده که بطور جداگانه نیز آمده است.


 


 


 


انتخاب سطر و ستون


دو دستور زیر طریقه انتخاب سطر ستون و سطر کلی می باشد:


Range("A:F").Value = 100


Range("1:5").Value = 100


که مشخص شده در آنها مقدار100 گذارده شود.در این دستورها تمامی ستونهای مابین و تمامی سطهای ما بین نیز ارزش مشخص شده را می گیرند.


 


دستور زیر:


Range("A:A,F:F").Value = 100


دستوری است که به برنامه می گوید ستون A و ستون F را به تنهایی ارزش 100 بگذار.


می توان به جای ستونها از سطرها نیز استفاده نمود.


 


دستور زیر:


Range("A1:A5,C1:C5,D1:D5").Value = 4


را وارد کنید و نتیجه را با RUN  نمودن ببینید.


معرفی سلولها با استفاده از متغیرها 


دستور زیر را واد کنید:


A = 1


B = 2


C = 3


Range(Cells(A, A), Cells(B, B)).Value = 6


که در این صورت متغیرهای A B C  را می توان برای برنامه تعریف کرد و در دستور CELLS  ا


 


 


RExcel نرم افزار آنالیز آماری در Excel


در نرم افزار Excel  توانایی کار با ریاضیات و آمار در حد متوسطی قرار داده شده است و برای حل مسائل آمار پیشرفته و جوابهای قابل اطمینان تر به Add-in هایی نیازمندیم. یکی از بهترین این Add-in ها R است.


R بسته ای قابل توسعه (برنامه نویسی) برای کار با داده ها ، انجام آنالیزهای آماری و نمایش داده ها به صورت نموداری .


نرم افزار RExcel محیط R را بیش از هزار قابلیت بر روی نرم افزار Excel به صورت یک Addins آماده استفاده برای کاربران این نرم افزار می نماید.


بنابراین R نرم افزاری برای آنالیز آماری و نمایش گرافیکی داده ها.


این نرم افزار توسط تیمی بین المللی که در دانشگاهها و صنایع مختلفی مشغول فعالیت می باشند تهیه گردیده است.نرم افزار R یک از ابزارهای اصلی در تحقیقات آماری، علوم اجتماعی، اقتصاد و تجارت می باشد.


توسط این نرم افزار می توان کارهای زیر را نیز انجام داد:


* مدیریت داد ها و ابزارهای ذخیره آنها.


* ابزاری برای کار با ماتریس ها


* قابلیت توسعه و برنامه نویسی قدرتمند با زبانی که به آن S می گویند، که با در این زبان می توان حلقه ها، شرطها و انواع توابع را برنامه نویسی کرد.


 


RExcel یک Interface – رابطه گرافیکی با کاربر – می باشد که نرم افزار R را به شکل یک Add-in در اکسل نصب می کند.


توسط RExcel  می توان داده ها را بین Excel   و R رد و بدل نمود و در Excel می توان از توابع R استفاده نمود. سایر امکاناتی که RExcel در اختیار ما قرار می دهد:


از توابع R در Excel استفاده می شود و موتور محاسباتی اکسل این محاسبات را کنترل می نماید.


* کنترل Missing Data


* نصب خط فرمان R Commander و همچنین Menu در اکسل


* امکان استفاده از Statconn or DCom Server




 


 


حذف ارسالي ويرايش ارسالي
jalil jalili

jalil jalili

در کارگروه: پروژه های دانشجویی
تعداد ارسالي: 1
7 سال پیش در تاریخ: یکشنبه, مرداد 08, 1396 22:7

سلام،ما یک ترازو داریم که بهمون از طریق پورتهای سریال rs232 دو تا عدد میده که با hyper terminal میبینمشون،الان می خوام این وزن ها رو وارد اکسل بکنم که این کارم خودکار انجام بشه،یعنی وقتی ریموت و میزنیم وزن ها وارد اکسل بشه و بعدش تو اکسل بقیه محاسبات انجام بشه،میشه راهنمایی کنید باید چیکار کنم،ممنون 


حذف ارسالي ويرايش ارسالي