
قبل از شروع آموزش VBA در اکسل بدانید:
برای شروع آموزش VBA در اکسل اول باید بدانید که:
- این زبان برنامه نویسی چیست؟
- استفاده از آن چه مزابا و معایبی دارد؟
- کجا باید از آن استفاده کرد و کجا نباید از آن استفاده کرد؟
در این قسمت قصد داریم چندین نکته را برای کسانی که قصد آموزش VBA در اکسل دارند شرح دهیم. آشنایی با این نکات به شما کمک خواهد کرد که دید مناسبی به این زبان برنامه نویسی داشته باشید.
VBA یعنی چی؟
VBA (مخفف عبارت Visual Basic for Applications) یک زبان برنامه نویسی برای اکسل و سایر برنامه های آفیس هست. خوبست بدانید که این زبان برنامه نویسی محدوده به آفیس نیست، بسیاری از برنامه های دیگر (مثل AutoCAD و Arena …) هستند که از این زبان برنامه نویسی استفاده میکنند.
یادتان باشد که این زبان را با زبان VB یکسان نکنید. هر چند که شباهت های بسیاری بین این دو هست. اما از زبان VB برای ایجاد برنامه های تحت ویندوز (اصطلاحا برنامه های مستقل) که پسوند .EXE دارند استفاده میشود. اما از این زبان برنامه نویسی (در بین کاربران ایرانی بعضا به اشتباه، به آن ماکرو گفته میشود، ولی ماکرو بخشی از VBA هست، در آموزش های آینده متوجه آن خواهید شد) تنها در بستر برنامه ها قابل استفاده هست.
کاربران اکسل کارهای بسیار متنوعی با اکسل انجام میدهند به عنوان مثال:
- ذخیره اطلاعات مشتریان، نمرات دانش آموزان و …
- بودجه بندی و پیش بینی مالی
- تحلیل علمی داده ها
- ایجاد صورت وضعیت ها و سایر فرم ها
- ایجاد نمودار از پایگاه های داده
لیست بالا میتواند خیلی ادامه داشته باشد. اکسل در موارد بسیار متنوعی استفاده دارد و هر کسی که در حال خوندن این مقاله هست انتظارات مختلفی از آن دارد. اما یک چیزی که بین همه این افراد مشترک هست، نیاز به خودکار کردن بخشی از اکسل هست. این همان چیزی هست که VBA برای آن به وجود اومده است.
مثلا فرض کنید شما یک برنامه برای فرمت دادن استاندارد و پرینت گزارش فروش ماهیانه ایجاد کرده اید. بعد از ایجاد و آزمایش برنامه میتوانید ماکرو را با یک دستور اجرا کنید و با این کار زمان زیادی رو صرفه جویی کنید.
در ادامه با مزایا و معایب برنامه نویسی ماکرو یا VBA آشنا خواهید شد.
مزایای استفاده از VBA
برای شروع آموزش VBA در اکسل بدانید آیا استفاده از آن به درد شما میخورد یا نه؟ همچنین باید بدانید که چه استفاده ها و مزایایی دارد. در اینجا به طور خلاصه چند تا از کاربردهای عمومی VBA آورده شده:
- کار با اشیا موجود اکسل و اعمال تغییرات
برای کار کردن با شیت ها، ردیف ها و ستون ها و … بصورت اتومات باید از کدنویسی استفاده کنیم. مثلا میخوایم طبق شرایط خاصی، یک سری ردیف ها حذف و اضافه بشن. یا یک سری شیت اضافه بشن و کارهایی داخل اونها انجام بشه. همه این کار ها رو با VBA میشه انجام داد.
- ایجاد فرم های ورود داده (رابط کاربری)
یکی از پر تکرارترین سوال هایی که افراد طرح میکنند، ایجاد یک فرم برای ورود اطلاعات هست که افراد بتونن داده ها رو در فرم وارد و پس از زدن یک دکمه، داده ها در انتهای داده های قبلی ثبت بشه. برا یاین کار نیز VBA و استفاده از یوزرفرم ها راه حل مسئله است.
- قرار دادن یک متن به صورت خودکار
اگر نیاز دارید گاهی اوقات نام شرکت خودتان رو در شیت ها وارد کنید، میتوانید یک ماکرو ایجاد کنید تا این کار رو برای شما انجام دهد. شما میتوانید این کار را تا هرجائیکه فکر میکنید گسترش دهید و ماکروهای پیچیده طراحی کنید. مثلا ماکرویی که به صورت خودکار نام پیمانکاران شرکت شما را در شیت قرار بدهد.
- خودکار کردن کاری که زیاد انجام میدید
فرض کنید شما مدیر فروش یک شرکت هستید و لازم هست که گزارشی از فروش ماهیانه (که هر ماه باید ایجاد کنید) هر چه سریعتر برای مدیر خود ایجاد کنید. شما میتوانید ماکرویی طراحی کنید که این گزارش رو برای شما در عرض چند ثانیه ایجاد کند و با زدن یک دکمه، کل این فرآیند بصورت خودکار انجام بشه
- خودکار انجام دادن کارهای تکراری
بعضی اوقات شما باید یک کار را عینا (مثلا در ۱۲ شیت دیگر) تکرار کنید. پیشنهاد میکنیم یکبار این کار را با ضبط کردن ماکرو ذخیره کنید و مابقی را هر چه سریعتر با اجرای این ماکرو انجام بدید. مزیتی که اکسل دارد در این است که هیچ زمان از انجام این کارها خسته نمیشود و با کوچکترین زحمت بر شما این کارها را انجام میدهد.
- انجام یک کار در زمان های خاص
مثلا میخواید یک کار مشخص مثل Sort داده ها در زمان های خاصی مثلا هر ۵ دققیقه یکبار بصورت اتوماتیک انجام بشه. این کار فقط از طریق VBA امکان پذیر هست.
- ایجاد دکمه های دلخواه در نوار ابزار
شما میتوانید نوار ابزار (یا همون ریبون های اکسل ) را به صورتی که دوست دارید با دکمه های خودتان تغییر بدید. این مورد خیلی در حرفه ای نشان دادن شما تأثیر دارد.
- ایجاد منوهای دلخواه
شما میتوانید منوهای اکسل را با دستورات خودتان شخص سازی کنید.
- ایجاد یک رابط کاربری (یوزرفرم)
در استفاده از اکسل هم افرادی هستند که آشنایی کافی با نحوه استفاده از آن را ندارند. با استفاده از VBA میتوانید فرمی بسازید که کار، با برنامه خاصی که نوشته اید را برای کاربران راحت کنید و اونها بدون نیاز به ارتباط با خود اکسل، گزینه های مختلف را در فرم انتخاب کنند و نتیجه را مشاهده کنند.
- ایجاد توابع جدید
اکسل تعداد بسیار زیادی تابع از پیش ساخته شده دارد (مثل تابع SUM و AVERAGE)، شما هم میتونید توابع مخصوص به خود بنویسید تا محاسباتی را که خاص شما هست انجام دهند. مثلا تابع vlookup که درهمه شیت ها جستجو انجام بده. یا تابعی برای تبدیل عدد به حروف و ….
- ایجاد برنامه هایی که فقط با VBA نوشته شده اند
شما میتوانید با صرف وقت کافی برنامه هایی را در اکسل ایجاد کنید که کاملا بر پایه یوزرفرم ها هستند که مقیاس بزرگی دارند و کاربر نیازی به کار با سلول ها نداشته باشد.
- ایجاد افزونه ها (ADD-INS) دلخواه
و در آخر شما میتوانید افزونه های خاص خودتان را ایجاد کنید. احتمالا تا الان با برخی افزونه های اکسل که به صورت پیشفرض همراه با اکسل هست (مثل افزونه Analysis ToolPak، Excel Utilities) آشنا باشید. شما میتوانید با آموزش VBA در اکسل ، برنامه ها و توابع خودتان را در اختیار دیگران قرار بدید و یا هر جا که خواستید از آنها استفاده کنید.
معایب استفاده از VBA
هیچ چیزی خالی از عیب نیست. در کنار مزایای زیادی که VBA دارد استفاده از آن هم میتواند معایبی داشته باشد که دانستن این معایب برای شما خیلی مفید هست.
زبان VBA آنقدر قدرتمند هست که برای هر کسی که آن را آموخته بسیار وسوسه کننده هست. بارها شده است که با استفاده از VBA رمز فایل های اکسل را شکسته ایم. این کار باعث میشود برای انجام هر کاری مستقیم به سراغ VBA بروید. اما قبل از شروع موارد زیر را بدانید:
- بعضی اوقات نوشتن، آزمایش کردن و عیب یابی کدها زمان بیشتری نسبت به استفاده از ابزارهای اکسل نیاز دارد.
- زبان VBA قدرت تطبیق کمتری در کدنویسی نسبت به اکسل دارد. این به چه معنی هست؟ فرض کنید شما در یک سلول فرمولی نوشتید و به یک سلول یا محدوده دیگر در یک شیت دیگر ارجاع داده اید. بعد از این کار نام شیت رو عوض میکنید، اکسل به صورت خودکار نام شیت را در فرمول ها اصلاح میکند و نام جدید را قرار میدهد اما در VBA این کار انجام نمیشود!!! به این معنی که اگر چیزی را از قبل تعریف کرده اید و حالا نامش را بعد از نوشتن کدها عوض کرده اید، باید بگردید و نام جدید را جایگزین نام قدیم آن کنید (این میتواند کار را خیلی سخت کند).
- زمانیکه یک فایل حاوی کد VBA رو باز میکنید یک پیغام امنیتی نمایش داده میشود (البته این پیغام بستگی به تنظیمات امنیتی اکسل در ارتباط با کدهای VBA دارد) و در صورتیکه کاربر اجازه اجرای کد را نداده باشد، برنامه ای که شما نوشته ابد اجرا خواهد شد. بعضی از کاربران اکسل این پیغام رو نادیده میگیرند و یا حتی برای قبول کردن آن ترس دارند. به همین دلیل از همان ابتدا امکان دارد استفاده از برنامه های VBA به مشکل بر بخورد!
- یکی از بزرگترین ایرادات استفاده از VBA برگشت ناپذیر بودن کاری که انجام شده هست. فرض کنید شما کد را اجرا کرده اید و بخشی از داده ها در شیت را پاک کرده اید. اگر در این زمان به دکمه Undo نگاه کنید میبینید که غیرفعال هست و امکان بازگرداندن کار انجام شده نیست. :(
- اگر شما در کدنویسی از کامنت ها استفاده نکنید در آینده قطعا برای درک مجدد کدهاتون به مشکل بر میخورید.
کامل ترین پکیج ویدئویی برنامه نویسی VBA در اکسل (فارسی)
برای مشاهده اطلاعات بیشتر روی دکمه زیر کلیک کنید
نتیجه گیری در مورد آموزش VBA
زبان برنامه نویسی VBA بسیار قدرتمند هست و افراد زیادی که با اکسل کار میکنند علاقه دارند این زبان را یاد بگیرند. اما قبل از شروع آموزش vba در اکسل ، آشنایی به نقاط قوت و ضعف و توانایی های این زبان برای دانستن اینکه این زبان به درد شما میخوره بسیار ضروری هست.
در این مطلب سعی شد VBA را با دید جامعی معرفی کنیم. شما هم اگر تجربه ای (چه خوب و یا بد) با ما در اشتراک بگذارید.
مطالب بسیار روان بیان شده…امیدوارم مطالب بیشتری تهیه کرده ودرسایت تون بگذارید چون بسیارسودمند ست…سپاس
با سلام
ببینید من یک شیت در اکسل که تعداد مشخصی ستون و ردیف داره درست کردم ، همین که یک کلید ماکرو تعریف میکنم که یک کاری خاصی انجام بده بعد از اتمام ساخت این کلید ماکرو ، تعداد بی نهایت برای من ستون درست میکنه ، بطور مشخص تر بگم اگر ستون اول A ستون دوم B و مثلا ستون آخر درون اون شیت T باشه بعد از ساخت یک کلید مایکرو به یک عملکرد خاص تعداد ستونهای درون این شیت بی نهایت میشه مثلا آخرین ستون میشه XZEW ، کلید مایکرو که ساختم رو پاک که میکنم دوباره به حالت اولیه برمیگرده ، میخواستم بدونم مشکل از کجاست با تشکر فراوان از شما
درود بر شما
نکته اول اینه که تعداد سطر و ستون ها د راکسل ثابت هستن و آخرین ستون اکسل XFD هست. شما نمیتونید ستون و ردیف ها رو حذف کنید. نهایتا میتونید با Hide کردن اونها رو نمایش ندید.
مورد دوم اینه که خب باید بررسی بشهش که اون ماکرو چکاری انجام میده و در چه محدوده ای
سلام وقت شما بخیر
من یه فایل اکسلی دارم که شامل چندین sheet هست که تو هر sheet اطلاعاتی هست که سلول به سلول فرمول نویسی شده،نکته اینجاست که میخوام این فایل اکسل رو share کنم و تبدیل به exe یا اصلا html بشه که توی شبکه شخص دیگه تغییرات رو بصورت آنلاین بتونه ببینه نمیخوام shortcute باشه،چندتا نرم افزار هم تست کردم ولی متاسفانه جواب نگرفتم لطفا اگه راهی هست راهنماییم کنید.
سلام وقتتون بخیر
یه سوال داشتم خیلی ضرویه ممنون میشم راهنماییم کنین
چیجوری در vba با کلیک بر روی add در user from2 داده را کپی کنه؟
منظور اینه داده های ستونی که ما توسط user from1 یک cell آن را انتخاب کردیم رو paste کنه
درود بر شما
برای دیدن کدهای کپی و paste ماکرو ضبط کنید
سلام جناب چراغی من چطور میتونم با شما راجع به یک برنامه صحبت کنم به راهنماییتون نیاز دارم ممنون
سلام دوست عزیز
درخواست پروژه خودتون رو میتونید با ذکر جزئیات در قالب ایمیل ارسال کنید تا بررسی بشه.
یک جدول در اکسل دارم شامل دو فیلد a,b
می خواهم سطرهایی از جدول را استخراج کنم که فیلد b ان برابر با کلمه “کد” باشد.
چگونه این کار را انجام دهم؟
با عرض سلام و ادب
خواهشمند است در صورت امکان بیان فرمایید که چگونه می توان جدول مندرج در وب پیج زیر را در اکسل پیست نمود به نحوی که ارقام آن نیز درج شود.
http://codal.ir/Reports/Decision.aspx?LetterSerial=XlOGrqyU3l%2b2GgAVtb%24*%24WOg%3d%3d&rt=0&let=6&sheetId=9
با تشکر فراوان
سلام
با توجه به اینکه اطلاعات این صفحه درون فرم کنترل قرار گرفته برای همین در هنگام کپی کردن، خود فرم کنترل هم منتقل میشه و مجبور هستید به صورت دستی اطلاعات رو از درون آنها کپی کرده و به سلول منتقل کنید.
بعد از اینکه اطلاعات رو از صفحه به اکسل منتقل کردید، دستور زیر رو اجرا کنید.
موفق باشید