
لینک کوتاه : https://magicfile.ir/?p=4656
دانلود برنامه ساخت ماشین حساب در شیت اکسل با VBA
در این پروژه کاربردی، یک ماشینحساب پیشرفته در محیط اکسل با استفاده از VBA پیادهسازی شده است که قابلیت انجام محاسبات ساده و پیشرفته ریاضی را فراهم میسازد. برخلاف ماشینحسابهای ساده که تنها اعمال پایه را انجام میدهند، این ماشینحساب از توابع علمی مانند sin
، cos
، tan
، sqrt
، log
، و همچنین ثوابت ریاضی مانند عدد پی π
و عدد نپر e
پشتیبانی میکند. علاوه بر این، این پروژه دارای یک رابط کاربری گرافیکی تعاملی است که کاملاً به صورت خودکار با اجرای یک ماکرو در اکسل ساخته میشود. بهعبارت دیگر، کاربر تنها با اجرای ماکروی CreateProCalculator
میتواند یک شیت اختصاصی به نام "ماشين حساب" بههمراه تمام دکمههای عملکردی آن ایجاد کند، بدون اینکه نیاز به طراحی دستی یا کدنویسی مجدد داشته باشد.
ساختار اصلی این پروژه در دو بخش خلاصه میشود: ساخت ظاهر گرافیکی ماشینحساب و مدیریت عملکرد دکمهها. در بخش اول، از طریق یک آرایه از برچسبهای دکمهای، طیف وسیعی از توابع و عملیات ریاضی در قالب دکمههایی با رنگبندی و چیدمان مناسب روی شیت درج میشود. هر دکمه با رویداد OnAction
به یک تابع مشخص (یعنی ProCalcClick
) متصل شده که هنگام کلیک بر روی آن اجرا میشود. همچنین نمایشگر ماشینحساب (محدوده سلولهای B2 تا F2) برای نمایش لحظهای ورودیها یا نتایج محاسباتی طراحی شده و بخش تاریخچه نیز در ستون H قرار دارد تا هر محاسبهای که انجام میشود بهصورت خودکار در آن ثبت گردد.
بخش دوم پروژه که مسئول عملکرد داخلی ماشینحساب است، در روال ProCalcClick
پیادهسازی شده است. این تابع با دریافت عنوان دکمه کلیکشده، ورودی مربوطه را به متغیر سراسری inputExpr
اضافه کرده و در صورت نیاز، فرمول نهایی را برای ارزیابی آماده میسازد. هنگامی که کاربر دکمه "=" را فشار میدهد، ورودی به کمک تابع Replace
به معادل توابع اکسل تبدیل میشود (مثلاً "sqrt" به "SQRT"، "log" به "LOG10"، یا "?" به "PI()"). سپس با استفاده از Application.Evaluate
محاسبه نهایی انجام شده و نتیجه در سلول B2 نمایش داده میشود. اگر خطایی در فرمول باشد (مثلاً پرانتز ناقص یا تقسیم بر صفر)، پیام خطا بهصورت فارسی در نمایشگر نشان داده خواهد شد.
از دیگر قابلیتهای حرفهای این ماشینحساب میتوان به امکان پاکسازی کامل (AC
)، حذف کاراکتر آخر (?
بهعنوان backspace)، و پشتیبانی از توابع تو در تو اشاره کرد. برای مثال کاربر میتواند عباراتی مانند sqrt(sin(30))
را نیز وارد کند (البته باید به رادیان بودن توابع مثلثاتی در اکسل توجه داشت). این ساختار امکان استفادههای تحلیلی و آموزشی در محیط اکسل را فراهم میسازد و برای مدرسین، دانشجویان، تحلیلگران داده و حتی حسابداران میتواند ابزاری قدرتمند و قابل سفارشیسازی باشد. تاریخچه محاسبات نیز به شکل فهرستی از معادلات و نتایج در ستون H ذخیره میشود که برای مراجعات بعدی و ثبت عملیات بسیار مفید است.
در نهایت، این پروژه نهتنها یک ابزار محاسباتی است بلکه نمونهای عالی از استفاده ترکیبی از قابلیتهای فرمسازی، کنترل رویدادها و ارزیابی فرمولها در محیط VBA به شمار میآید. از آنجا که تمام عناصر ماشینحساب بهصورت کدنویسی ایجاد میشوند، این پروژه قابلیت توسعهپذیری بالایی دارد. میتوان امکاناتی مانند تبدیل درجه به رادیان، افزودن نمودار تابع، تعریف متغیرها یا حتی اتصال به پایگاهداده برای ثبت محاسبات را نیز به آن افزود. این پروژه یک نمونه بارز از قدرت VBA در ایجاد ابزارهای کاربردی سفارشی در محیط Excel است که با اندکی توسعه میتواند به یک ابزار تجاری یا آموزشی تمامعیار تبدیل شود.
🎯 معرفی ماکروی VBA برای ساخت ماشینحساب پیشرفته در اکسل
اگر به دنبال پیادهسازی یک ماشینحساب پیشرفته و پویا در Excel هستید که بهصورت تماماتوماتیک ساخته شود و محاسبات پیچیدهای مانند مثلثات، لگاریتم، توان، عدد پی و ... را انجام دهد، این ماکرو دقیقا همان چیزی است که به آن نیاز دارید!
در این مقاله یک کد کامل VBA را معرفی میکنیم که با اجرای آن:
-
یک شیت جدید با نام "ماشين حساب" ساخته میشود.
-
رابط گرافیکی ماشینحساب با دکمههای محاسباتی ایجاد میشود.
-
ورودیها به صورت تعاملی جمعآوری و ارزیابی میشوند.
-
نتیجه محاسبه نمایش داده شده و در تاریخچه ذخیره میشود.
📌 ساختار کد
1. متغیر ورودی
Dim inputExpr As String
متغیری عمومی که عبارت ورودی (ورودی کاربر از دکمهها) را ذخیره میکند تا در هنگام فشردن "=" محاسبه شود.
2. سابروتین CreateProCalculator
این سابروتین کل رابط گرافیکی ماشینحساب را میسازد.
مراحل عملکرد:
-
حذف شیت قدیمی با نام "ماشين حساب" (در صورت وجود)
-
ساخت شیت جدید و تنظیم ظاهر
-
طراحی دکمهها شامل:
-
اعداد (0 تا 9)
-
عملیات اصلی:
+
,-
,*
,/
-
توابع علمی:
sin
,cos
,tan
,sqrt
,log
,^
,%
,e
,PI
-
کلیدهای کنترلی:
=
,AC
, حذف (?
)
-
-
تنظیم رنگهای متفاوت برای هر دسته از دکمهها
-
تعریف اکشن (رویداد) کلیک برای دکمهها به روال
ProCalcClick
3. سابروتین ProCalcClick
این سابروتین هنگام کلیک روی هر دکمه اجرا میشود و نقش اصلی در مدیریت ورودی و انجام محاسبات را دارد.
رفتارهای تعریفشده:
-
اگر دکمه
=
باشد:-
عبارت
inputExpr
پردازش و تبدیل به فرمول اکسل میشود. -
توابعی مانند
sin
,sqrt
,PI
,log
و ... به معادل Excel تبدیل میشوند. -
عبارت نهایی توسط
Application.Evaluate
محاسبه میشود. -
نتیجه در سلول
B2
نمایش داده شده و بهصورت تاریخچه در ستون H ذخیره میشود.
-
-
اگر
AC
فشرده شود، نمایشگر و متغیر ورودی پاک میشود. -
اگر
?
فشرده شود، آخرین کاراکتر ورودی حذف میشود (حذف معادل backspace). -
برای توابع مانند
sin
,cos
,sqrt
، به صورتتابع(ورودی)
نوشته میشود. -
در حالت عادی، هر دکمهای که فشرده شود به انتهای
inputExpr
اضافه میشود.
🔢 مثالهایی از عملکرد ماشینحساب
ورودی دکمهها | فرمول نهایی | نتیجه |
---|---|---|
3 , + , 2 , = |
3 + 2 |
5 |
sqrt , 9 , = |
SQRT(9) |
3 |
2 , ^ , 3 , = |
2 ^ 3 |
8 |
sin , 30 , = |
SIN(30) (در رادیان) |
~-0.99 |
e , + , 1 , = |
EXP(1) + 1 |
~3.718 |
⚠️ توجه: توابع مثلثاتی در اکسل به صورت رادیان عمل میکنند. برای درج درجه باید آن را به رادیان تبدیل کنید:
SIN(RADIANS(30))
💡 امکانات کلیدی
-
✅ ساخت خودکار رابط کاربری با دکمهها
-
✅ پشتیبانی از توابع علمی
-
✅ استفاده از Evaluate برای تفسیر فرمول
-
✅ ثبت تاریخچه محاسبات
-
✅ طراحی زیبا و رنگبندی تفکیکی
برای شما کاربران عزیز پیشنهاد دانلود داده می شود.