
لینک کوتاه : https://magicfile.ir/?p=4657
دانلود برنامه تبدیل واحدها در اکسل با استفاده از VBA
سیستم پیشرفته تبدیل واحد که در فایل اکسل شما طراحی شده، یک نمونه حرفهای و هوشمند از کاربرد VBA در محیط Excel است. این سیستم بهصورت پویا و داینامیک عمل میکند و به کاربر اجازه میدهد تا تنها با انتخاب نوع واحد (مثلاً طول، دما، نیرو و...)، به سرعت لیست کشویی واحدهای مرتبط را مشاهده کرده و بین آنها تبدیل انجام دهد. به جای استفاده از چندین فرمول دستی و پیچیده یا نیاز به مراجعه به جداول استاندارد، این فایل تمام محاسبات را با استفاده از توابع VBA، فرمولهای ترکیبی، و دادههای ساختاریافته انجام میدهد. این طراحی نه تنها رابط کاربری را ساده و قابل فهم میکند، بلکه برای کاربران در سطوح مختلف (از مبتدی تا مهندسین حرفهای) نیز کاملاً کاربردی است.
در بخش رابط کاربری که در شیت Converter
طراحی شده، کاربر با یک فرم شفاف و مشخص مواجه میشود که تنها کافیست نوع واحد را از یک لیست کشویی انتخاب کند. سپس بهصورت خودکار دو لیست کشویی دیگر نمایش داده میشود که شامل کدهای واحدهای مبدأ و مقصد هستند. این کدها مستقیماً از شیت Sheet_Units
استخراج میشوند، جایی که اطلاعات تمام واحدها شامل نوع، نام، کد و ضریب استاندارد آنها ذخیره شدهاند. ضریبها برای تبدیل به "واحد پایه" طراحی شدهاند؛ به این معنا که اگر مثلاً واحد پایه در "طول" را "متر" در نظر بگیریم، تمامی سایر واحدها بر اساس آن تعریف شدهاند. بهعنوان نمونه، سانتیمتر برابر 0.01 متر و کیلومتر برابر 1000 متر تعریف شده است.
فرمول محاسبهای که در سلول B7 قرار دارد، هسته اصلی تبدیل واحد را تشکیل میدهد. این فرمول بهگونهای طراحی شده که ابتدا مقدار ورودی را در ضریب واحد مبدأ ضرب کرده و سپس بر ضریب واحد مقصد تقسیم میکند. با این روش، هر واحدی صرفنظر از اینکه از چه نوعی باشد، ابتدا به واحد پایه تبدیل شده و سپس به واحد مقصد انتقال مییابد. یکی از ویژگیهای مهم این طراحی، پشتیبانی از خطا است؛ یعنی اگر کاربر بهاشتباه یک واحد ناسازگار انتخاب کند یا اطلاعات ناقص باشد، سیستم بهجای ایجاد خطای غیرقابل درک، پیغام "خطا در تبدیل" را نمایش میدهد. این کار تجربه کاربری بسیار روانتری ایجاد میکند.
یکی از برجستهترین مزایای این سیستم، دامنه وسیع واحدهایی است که پشتیبانی میکند. از جمله واحدهای طول (متر، مایل، فوت)، فشار (پاسکال، بار، psi)، دما (سلسیوس، فارنهایت، کلوین)، نیرو (نیوتن، پوند)، انرژی (ژول، کالری، واتساعت)، توان، سرعت، زمان، جرم، حجم، جریان الکتریکی، مقاومت، ولتاژ و حتی واحدهای تخصصیتری مانند دسیبل برای صدا یا هرتز برای فرکانس. این تنوع باعث شده که فایل مذکور تنها به عنوان یک ابزار آموزشی ساده شناخته نشود، بلکه در پروژههای مهندسی، تحقیقاتی، صنعتی و حتی محیطهای آموزشی پیشرفته نیز کاملاً قابل استفاده باشد. همچنین اضافه کردن واحدهای جدید بهسادگی از طریق اضافه کردن سطرهای جدید در شیت Sheet_Units
امکانپذیر است.
در نهایت، این فایل نهتنها یک ابزار است، بلکه الگویی برای طراحی سیستمهای داینامیک در اکسل به شمار میآید. کاربران و توسعهدهندگان میتوانند از این ساختار الگوبرداری کرده و آن را برای سایر پروژههای خود توسعه دهند. از آنجا که هیچ محدودیتی در افزودن نوع واحد جدید، تغییر ضریبها یا سفارشیسازی رابط کاربری وجود ندارد، این فایل یک پایه مستحکم برای طراحی سیستمهای مهندسی و تجاری در اکسل محسوب میشود.
نمونه تصاویر
🎯 معرفی پروژه: سیستم هوشمند تبدیل واحدها در اکسل با استفاده از VBA
این فایل اکسل به زبان فارسی، یک سامانه تبدیل واحدهای فیزیکی و مهندسی است که به صورت کاملاً دینامیک، قابل گسترش و تعاملی با استفاده از ماکروهای VBA طراحی شده است. سیستم به کاربر اجازه میدهد با انتخاب نوع واحد (مثل طول، فشار، جرم، دما، انرژی و...)، فقط کدهای مرتبط با همان نوع را در لیست کشویی انتخاب کند و سپس با وارد کردن مقدار، نتیجه تبدیل را بهطور خودکار ببیند.
📄 شیتهای فایل و کاربرد هرکدام
1. Sheet_Units
(واحدها)
-
شامل جدول کامل و قابل گسترش واحدهای مختلف است.
-
هر ردیف شامل:
-
نوع واحد (مثلاً طول)
-
نام واحد (مثلاً متر)
-
کد واحد (مثلاً
m
) -
ضریب تبدیل به واحد پایه (برای محاسبات)
-
2. Converter
(مبدل)
-
این شیت فرم اصلی تبدیل واحد برای استفاده کاربر است.
-
امکانات آن شامل:
-
لیست کشویی انتخاب نوع واحد (
B3
) -
لیست کشویی "از کد واحد" (
B4
) و "به کد واحد" (B5
) -
ورودی مقدار (
B6
) -
خروجی نتیجه تبدیل (
B7
)
-
3. Hidden_Calc
(محاسبات مخفی)
-
این شیت بهصورت مخفی نگهداری میشود و وظیفه آن:
-
ساخت محدودههای داینامیک برای لیست کشویی واحدها بر اساس نوع انتخابشده
-
ذخیره لیستهای موقت مورد نیاز توسط ماکروها
-
🧠 توضیح عملکرد کدها
تابع Create_UnitConverter_Complete
-
ایجاد خودکار تمام شیتها (و حذف نسخههای قبلی)
-
وارد کردن دادههای واحدها در
Sheet_Units
-
استخراج لیست نوع واحدها برای ایجاد لیست کشویی در
Converter
-
تنظیم فرمول تبدیل در سلول خروجی (
B7
) -
در پایان، پیغام موفقیت اجرا نمایش داده میشود.
رویداد Worksheet_Change
در شیت Converter
-
هر زمان کاربر نوع واحدی را در
B3
انتخاب کند:-
تابع
UpdateUnitCodesList
اجرا میشود. -
این تابع فقط کدهای مربوط به نوع انتخابشده را نمایش میدهد.
-
تابع UpdateUnitCodesList
-
دادهها را از
Sheet_Units
فیلتر کرده و کد واحدهای مرتبط را درHidden_Calc
مینویسد. -
سپس لیست کشویی سلولهای
B4:B5
را بر اساس این کدها تنظیم میکند. -
اگر هیچ واحدی یافت نشد، لیست کشویی حذف میشود.
تابع کمکی ConcatArrays
-
برای ترکیب آرایههای مختلف حاوی دادههای واحد استفاده میشود تا واحدها را بهصورت یکپارچه وارد شیت کنیم.
📌 ویژگیهای خاص این پروژه
ویژگی | توضیحات |
---|---|
🧩 داینامیک بودن | لیستها به صورت خودکار و متناسب با انتخاب کاربر فیلتر میشوند. |
🖱️ استفاده آسان | رابط کاربری ساده و شهودی با فرم قابل فهم فارسی |
🧮 دقت در تبدیل | محاسبه دقیق بر اساس ضرایب تبدیل |
🛠️ قابلیت توسعه | امکان افزودن واحدهای بیشتر تنها با اضافه کردن ردیف به Sheet_Units |
🔒 مدیریت خطا | اگر تبدیل انجام نشد، پیام "خطا در تبدیل" نمایش داده میشود. |
✅ روش استفاده
-
روی دکمه اجرای ماکرو
Create_UnitConverter_Complete
کلیک کنید یا از محیط VBA اجرا کنید. -
پس از اجرای موفق، به شیت
Converter
بروید. -
نوع واحد موردنظر (مثلاً "فشار") را انتخاب کنید.
-
کد واحد مبدا و مقصد را انتخاب کرده و مقدار را وارد نمایید.
-
نتیجه بهصورت خودکار محاسبه و نمایش داده میشود.
🎯 هدف کلی این فایل اکسل:
ایجاد یک مبدل واحد پویا و هوشمند که کاربر بتواند با انتخاب نوع واحد (مثلاً طول، فشار، دما و...) به راحتی بین دو واحد مختلف از آن نوع تبدیل انجام دهد.
🧩 توضیح ساختار فایل و شیتها
1. شیت Converter
: رابط کاربری تبدیل
این شیت، فرم اصلی برای کاربر است و شامل قسمتهای زیر میشود:
-
B3: لیست کشویی برای انتخاب نوع واحد (مثلاً طول، دما، نیرو و...).
-
B4 و B5: لیست کشویی که بعد از انتخاب نوع، بهطور خودکار با کدهای مربوط به واحدهای آن نوع پر میشود.
-
B6: مقدار اولیه برای تبدیل (مثلاً 5).
-
B7: نتیجه نهایی تبدیل بین دو واحد.
2. شیت Sheet_Units
: پایگاه داده واحدها
در این شیت اطلاعات تمام واحدها قرار دارد:
-
ستون A: نوع واحد (مثلاً طول، فشار، انرژی).
-
ستون B: نام واحد (مثلاً متر، نیوتن).
-
ستون C: کد واحد (مثلاً m، N).
-
ستون D: ضریب تبدیل به واحد پایه هر گروه.
📌 این شیت به عنوان مرجع اصلی برای تمام تبدیلات عمل میکند.
3. شیت Hidden_Calc
: محاسبات پنهان و لیستهای کشویی
-
ستون A: لیست تمام انواع واحدها برای لیست کشویی سلول B3.
-
ستون B و C: بسته به نوع انتخابشده، کد و نام واحدهای مرتبط را در خود ذخیره میکند تا در لیست کشویی B4 و B5 استفاده شود.
⚙ این شیت برای کاربران عادی مخفی است و فقط برای پردازش درونسیستمی کاربرد دارد.
✅ کدام نوع واحدها را پشتیبانی میکند؟
این سیستم بسیار جامع طراحی شده و واحدهای مربوط به دستههای زیر را تبدیل میکند:
نوع واحد | مثال واحدهای قابل تبدیل | توضیح |
---|---|---|
طول | متر (m)، سانتیمتر (cm)، کیلومتر (km)، فوت (ft)، مایل (mi)، نانومتر (nm) و... | واحدهای رایج اندازهگیری فاصله |
فشار | پاسکال (Pa)، بار (bar)، psi، اتمسفر (atm)، میلیبار | واحدهای مختلف فشار |
نیرو | نیوتن (N)، پوند (lbf)، کیلوگرمنیرو (kgf)، دین (dyn) | محاسبه نیروی مکانیکی |
ولتاژ | ولت (V)، میلیولت (mV)، کیلوولت (kV) | برای اندازهگیری اختلاف پتانسیل الکتریکی |
دما | سلسیوس (C)، فارنهایت (F)، کلوین (K) | توجه: تبدیل بین دماها نیاز به فرمول متفاوتی دارد و این سیستم با ضریب کار میکند (نسبی) |
انرژی | ژول (J)، کیلوژول، کالری، کیلووات ساعت (kWh) | انرژی فیزیکی و گرمایی |
توان | وات (W)، کیلووات (kW)، اسب بخار (hp) | برای محاسبه قدرت دستگاهها |
سرعت | متر بر ثانیه، کیلومتر بر ساعت، مایل بر ساعت، گره (kn) | برای اندازهگیری سرعت حرکت |
جرم | کیلوگرم، گرم، تن، پوند، اونس، میلیگرم | تبدیل واحدهای وزنی |
حجم | لیتر، میلیلیتر، متر مکعب، فوت مکعب | برای مایعات و گازها |
زمان | ثانیه، دقیقه، ساعت، روز، میکروثانیه | زمانهای استاندارد |
جریان الکتریکی | آمپر (A)، میلیآمپر، کیلوآمپر | شدت جریان |
مقاومت الکتریکی | اهم (Ω)، کیلو اهم، مگا اهم | مقاوتهای الکتریکی |
انرژی الکتریکی | وات ساعت (Wh)، کیلووات ساعت (kWh) | مصرف انرژی در برق |
فرکانس | هرتز (Hz)، کیلوهرتز، مگاهرتز | کاربرد در الکترونیک |
فشار صوتی | دسیبل (dB) | برای صدا و صوت |
که قابل گسترش نیز هستند.
💡 ویژگیهای مهم و حرفهای
-
کاملاً داینامیک و وابسته به لیستهای کشویی.
-
امکان اضافهکردن واحدهای جدید با ویرایش شیت
Sheet_Units
. -
بهروزرسانی خودکار لیستها با تغییر نوع واحد.
-
کد ماژولار و تمیز قابل توسعه برای آینده.
-
بدون نیاز به افزونه یا کامپوننت خارجی.
-
قابل استفاده در آموزش، مهندسی، فیزیک، برق، و مکانیک.
برای شما کاربران عزیز پیشنهاد دانلود داده می شود.