
لینک کوتاه : https://magicfile.ir/?p=4677
🎯 سورس کد کامل سیستم مدیریت نوبتدهی در اکسل با VBA + گزارشگیر
در این پست، سورس کدی کاملاً کاربردی برای ساخت یک سیستم مدیریت نوبتدهی در محیط Excel با استفاده از ماکرو VBA ارائه میشود. این سیستم نه تنها امکان ثبت، ویرایش، حذف و جستجوی نوبتها را فراهم میکند، بلکه قابلیت تولید گزارشهای تحلیلی پیشرفته را نیز دارد.
نمونه تصاویر در زمان اجرا
این کد VBA یک سیستم کامل و کاربردی برای مدیریت نوبتدهی بیماران در اکسل طراحی کرده است. با اجرای این کد، یک فرم گرافیکی باز میشود که امکان ثبت، نمایش، ویرایش، حذف و جستجوی نوبتهای ویزیت بیماران را از طریق جدول لیست نوبتها (ListBox) فراهم میکند. اطلاعات شامل نام بیمار، کد ملی، تاریخ و ساعت ویزیت و نوع مراجعه (اولیه، کنترل، اورژانس، ویزیت تلفنی) بوده و در شیت "نوبتها" ذخیره میشوند.
یکی از بخشهای مهم این سیستم، گزارشگیر پیشرفته نوبتها است که با کلیک روی یک دکمه، گزارشی دستهبندیشده از تعداد مراجعات بر اساس تاریخ و نوع ویزیت ایجاد میکند. کاربر ابتدا بازه تاریخی مورد نظر و (در صورت نیاز) کد ملی خاصی را وارد میکند و سپس خروجی گزارش بهصورت خودکار در شیت "گزارش نوبتها" تولید میشود. گزارش شامل ردیفهای رنگی، جدولبندی حرفهای، جمع کل نوبتها و مرتبسازی دقیق بر اساس تاریخ است.
در این کد از تکنیکهایی مانند استفاده از Dictionary برای دستهبندی دادهها، Bubble Sort برای مرتبسازی کلیدها، و قالببندی گرافیکی سلولهای اکسل استفاده شده است. طراحی آن بهگونهای انجام شده که بهراحتی قابل توسعه و استفاده در مطبهای پزشکی، کلینیکها یا مراکز مشاوره باشد. این سیستم نمونهای عالی از ترکیب فرمهای VBA با توانمندیهای گزارشگیری اکسل است.
💡 ویژگیهای اصلی سیستم
-
فرم گرافیکی برای مدیریت نوبتها با ListBox و TextBox
-
افزودن و ویرایش اطلاعات بیماران و نوبتها
-
حذف رکوردها با تأیید کاربر
-
جستجوی سریع با کد ملی
-
گزارشگیری حرفهای براساس بازه تاریخ و نوع ویزیت
-
دستهبندی گزارشها بر اساس نوع ویزیت و تاریخ
-
ظاهر زیبا، رنگبندی ردیفها، جدول حرفهای و جمع کل نوبتها
-
کاملاً قابل شخصیسازی برای مطب پزشکان، کلینیکها و مراکز درمانی
📦 ساختار کلی فرم نوبتدهی
1. اجرای رویدادها
Private Sub CommandButton1_Click() GenerateAdvancedNobatReport End Sub Private Sub CommandButton2_Click() Sheets("نوبتها").Activate End Sub
-
دکمه اول برای ساخت گزارش پیشرفته
-
دکمه دوم برای رفتن به شیت اصلی نوبتها
2. در زمان بارگذاری فرم
Private Sub UserForm_Initialize() LoadNobatList ' تنظیم عرض ستونها و لیست انواع ویزیت End Sub
-
بارگذاری لیست نوبتها در ListBox
-
مقداردهی اولیه به ComboBox نوع ویزیت (اولیه، کنترل، اورژانس و تلفنی)
📋 عملکردهای اصلی فرم
✅ افزودن نوبت جدید
Private Sub btnAdd_Click() ' بررسی صحت اطلاعات و اضافه کردن رکورد جدید End Sub
✏️ ویرایش نوبت
Private Sub btnEdit_Click() ' ویرایش رکورد انتخابشده از ListBox End Sub
🗑 حذف نوبت
Private Sub btnDelete_Click() ' حذف رکورد انتخابشده و بروزرسانی شمارهها End Sub
🔍 جستجوی نوبت با کد ملی
Private Sub btnSearch_Click() ' جستجو با استفاده از InputBox و انتخاب ردیف یافتشده End Sub
✨ پاکسازی TextBoxها
Sub ClearTextBoxes() ' پاک کردن همه فیلدهای فرم End Sub
📊 ساخت گزارش پیشرفته نوبتها
تابع اصلی: GenerateAdvancedNobatReport
این بخش یکی از حرفهایترین قسمتهای سیستم است. این تابع با دریافت بازه زمانی دلخواه کاربر و (در صورت نیاز) فیلتر کد ملی، گزارشی تحلیلی از تعداد نوبتها براساس تاریخ و نوع ویزیت تولید میکند.
امکانات این گزارش:
-
فیلتر بازه تاریخی دلخواه (ورودی کاربر)
-
فیلتر دلخواه براساس کد ملی
-
دستهبندی دادهها براساس "تاریخ و نوع ویزیت"
-
نمایش تعداد نوبتها برای هر گروه
-
جمع کل نوبتها
-
جدول مرتبشده با استفاده از الگوریتم مرتبسازی حبابی (BubbleSort)
-
ظاهر زیبا با رنگبندی ردیفها، فونت حرفهای و جدول مرزبندیشده
مثال از خروجی گزارش:
تاریخ ویزیت | نوع ویزیت | تعداد نوبتها |
---|---|---|
1403/01/01 | اولیه | 5 |
1403/01/01 | کنترل | 2 |
1403/01/02 | اورژانس | 1 |
... | ... | ... |
جمع کل نوبتها | 18 |
🧠 تکنیکهای بهکاررفته در کد
-
استفاده از ListBox برای نمایش چندستونه دادهها
-
استفاده از Dictionary برای شمارش گروهی
-
استفاده از BubbleSort برای مرتبسازی دادهها
-
استفاده از InputBox برای دریافت اطلاعات پویا از کاربر
-
قالببندی پیشرفته سلولها در گزارش خروجی (فونت، رنگ، جدولبندی)
-
تفکیک منطقی توابع برای سهولت توسعه و نگهداری
📥 نکته مهم
-
شیت حاوی اطلاعات باید با نام
نوبتها
و دارای ساختار زیر باشد:
شماره | نام بیمار | کد ملی | تاریخ ویزیت | ساعت ویزیت | نوع ویزیت |
---|
-
فرم مربوطه باید شامل کنترلهایی مانند
txtName
,txtCode
,txtDate
,txtTime
,txtType
,lstNobat
,btnAdd
,btnEdit
,btnDelete
,btnSearch
و ... باشد.
✅ نتیجهگیری
این سیستم یک ابزار کامل و در عین حال ساده برای مدیریت نوبتدهی در اکسل است که میتواند برای بسیاری از کسبوکارهای کوچک و مطبها بسیار مفید باشد. با قابلیت گزارشگیری دقیق و طراحی کاربرپسند، این پروژه میتواند پایهای برای توسعه سیستمهای پیشرفتهتر باشد.
برای شما کاربران عزیز پیشنهاد دانلود داده می شود.