مرجع تخصصی نرم افزار اکسل
آموزش، اجرای پروژه، طراحی، ساخت و توسعه هوش تجاری و صنعتی و داشبوردهای هوشمند آنالیز دیتا در ایران
Excel, VBA, Coding, Projects, Python, Django, Software developer
همکاری و مشاوره در پروژه های برنامه نویسی و توسعه نرم افزار و هوش تجاری

کد VBA برای جستجو و شمارش مقادیر در اکسل
ارسال در تاريخ دوشنبه بیست و پنجم فروردین ۱۴۰۴ توسط داود خانی

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

نکات مهم:

  • کد از سلول B4 به عنوان نقطه شروع استفاده میکند

  • محدوده داده‌ها به صورت خودکار با استفاده از CurrentRegion تشخیص داده میشود

  • سطر اول به عنوان هدر در نظر گرفته میشود (از جستجو صرف نظر میشود)

  • نتایج در پنجره Immediate نمایش داده میشوند (Ctrl+G در محیط VBA)

این کد برای تحلیل داده‌ها و یافتن اطلاعات خاص در مجموعه داده‌های اکسل بسیار مفید است.

دانلود فایل مینی پروژه


برچسب‌ها: اکسل, VBA, جستجو_در_اکسل, شمارش_داده‌ها

محاسبه خودکار مانده حساب با VBA در اکسل — راهکار ساده برای حسابداری شخصی
ارسال در تاريخ یکشنبه بیست و چهارم فروردین ۱۴۰۴ توسط داود خانی

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

چرا از VBA در اکسل استفاده کنیم؟

  • سرعت بالا: محاسبات پیچیده در کسری از ثانیه انجام می‌شود.

  • دقت: کاهش خطای دستی در ورود داده‌ها و محاسبات.

  • سفارشی‌سازی: امکان طراحی فرمول‌ها و توابع متناسب با نیازهای خاص.

نمونه کاربردی: محاسبه مانده حساب

در تصویر زیر، یک جدول حسابداری ساده را مشاهده می‌کنید که شامل ستون‌های تاریخ، شرح سند، مبلغ بدهکار (بدهکار) و مانده است. با استفاده از کد VBA، مانده هر ردیف به صورت خودکار محاسبه شده است.

توضیح کد:

  1. تعریف متغیرها: برگه اکسل و محدوده داده‌ها مشخص می‌شود.

  2. حلقه محاسبه: برای هر ردیف، مانده جدید با اضافه کردن مبلغ بدهکار به مانده قبلی محاسبه می‌شود.

  3. انعطاف‌پذیری: کد به راحتی قابل تغییر برای ستون‌های مختلف است.

نتیجه‌گیری

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

آیا شما هم تجربه‌ای در استفاده از VBA برای حسابداری دارید؟ نظرات خود را با من(داود خانی) به اشتراک بگذارید.

دانلود فایل مینی پروژه


برچسب‌ها: حسابداری, اکسل, VBA, خودکارسازی

مبحث امنیت در اکسل با کدنویسی(مجوز فعالیت با رمز ورود)
ارسال در تاريخ چهارشنبه یازدهم مهر ۱۴۰۳ توسط داود خانی

در اکسل برای ایجاد امنیت از فایل، داده ها، فرمول ها، محاسبات و سایر بخش های فایل اکسل با کدنویسی می توان متناسب با سناریو و پروژه های شخصی انواع روش اجاد امنیت را در اکسل کدنویسی . اجرا کزد.

در این مینی پروژه ساده، قرار است صفحه Database با رمز ورود در دسترس کاربران قرار گیرد و کدنویسی این مینی پروژه برای آشنایی مقدماتی با این سناریو است و در پروژه های بزرگ و گسترده بایستی شرایط امنیت را متناسب با نیاز مشتریان کدنویسی و تامین کرد.

فایل پروژه و کدهای آن را از فایل ذیل دانلود کنید و درصورت داشتن سوال و مشاوره پیام ارسال کنید.

فایل پروژه


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مبحث امنیت در اکسل با کدنویسی(vba) - جابجایی داده جدول و عدم دسترسی
ارسال در تاريخ دوشنبه نهم مهر ۱۴۰۳ توسط داود خانی

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

فایل پروژه


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه کدنویسی: ایجاد شماره ردیف(فاکتور و ...) جدید با انتخاب سلول ردیف جدید در اکسل
ارسال در تاريخ یکشنبه یازدهم شهریور ۱۴۰۳ توسط داود خانی

این مینی پروژه در اکسل، برای جداولی که لازم است شماره ردیف جدید ایجاد و درج شود(با هر تعداد کاراکتر و هر نوع چیدمان شماره) مورد استفاده قرار می گیرد و با کدنویسی در بخش VBA انجام شده و می توانید کد را از فایل قابل دانلود به پروژه تان منتقل کنید و با تغییر مراجع ها و روش شماره بندی متناسب با پروژه تان استفاده کنید.

دانلود فایل مینی پروژه

سوالات خود را در ادرس ایمیل davoud.kh@gmail.com مطرح کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

کاربرد With-End with در بهبود افزایش سرعت اجرای دستورات
ارسال در تاريخ چهارشنبه بیست و نهم آذر ۱۴۰۲ توسط داود خانی

از توابع موجود در vba که بسیار پرکاربرد و یکی از عوامل بهبود دهنده در سرعت اجرای دستورات هم هست تابع With - End With است که با یک آدرس مشخص شده، می توانیم تمامی کارهایی که در آن محدوده یکجا انجام دهیم و از رفت و برگشت های بیهوده و وقتگیر پرهیز و در بهبود اجرای دستورات، کمک خیلی زیادی به نرم افزار کنیم.

در یک مینی پروژه، کدهای آن را در اختیارتان قرار می دهم و کاری که انجام میدهد انتقال اطلاعات از یک فرم(مستقیم از داخل کد) به سمت جدول در یک شیت است. شما متناسب با پروژه تان می توانید مقدارهای مورد نظر را از یک Object بگیرید و در داخل کد آنها را تعریف کنید.

فایل ذیل را دانلود کنید و کدهای این مینی پروژه را مشاهده و در فایل های شخصی استفاده کنید.

دانلود فایل مینی پروژه(.xlsm)


برچسب‌ها: vba, with, end with

لیست فایل های Add-ins
ارسال در تاريخ پنجشنبه شانزدهم آذر ۱۴۰۲ توسط داود خانی

فایل های افزونه به اکسل در بخش Add-ins نرم افزار اکسل مدیریت می شوند و بنابه نیاز برخی برنامه نویسان لازم است از فعالسازی برخی فایل های مورد نظر مطمئن شوند و در بدنه کدنویسی پروژه به هر دلیلی از آن استفاده کنند. کد تهیه لیست فایل های فعال در Add-ins در قالب فایل مینی پروژه در ذیل قرار دادم تا در پروژه های خودتان در صورت نیاز بهره برداری کنید.

توابعی که در این مینی پروژه استفاد ه کردم به شرح ذیل است:

  1. For each
  2. Application.AddIns
  3. MsgBox
  4. Variables(متغیرها)

توجه: برای نمایش لیست فایل ها، از تابع MsgBox استفاده کرده ام و شما متناسب با پروژه تان محل نمایش را تعیین کنید.

دانلود فایل مینی پروژه(.xlsm)


برچسب‌ها: For, each, AddIns, VBA

استخراج شماره آخرین ردیف محدوده انتخاب شده صفحه اکسل با کدنویسی
ارسال در تاريخ سه شنبه چهاردهم آذر ۱۴۰۲ توسط داود خانی

برخی از کابران اکسل بنابه پروژه ای که دارند گاهی لازم می شود که شماره ردیف آخر محدوده ای انتخاب شده را بدست بیاورند تا از این شماره در کدنویسی و آدرس دهی استفاده کنند. به همین منظور اومدم یه نمونه کد این مینی پروژه را برای شما بنویسم و در این صفحه قرار دهم تا بهره برداری کنید.

بنای کدنویسی را بر این گذاشتم که هر جایی را کاربر از صفحه اکسل را انتخاب کرد به صورت خودکار شماره ردیف اول و شماره ردیف آخر محدوده را اعلام کند و به همین منظور از Selection استفاده کردم و شما بجای این تابع، می توانید آدرس مشخص را با ()Range بنویسید.

ابتدا شماره ردیف محدوده را طبق دستور ذیل به متغیر row1 می دهیم(تابع Row در ادامه Selection شماره ردیف Activecell را برمی گرداند):

Dim row1,row2

row1 = Selection.Row

در ادامه برای دسترسی به شماره ردیف آخر محدوده لازم است تعداد ردیف های محدوده را مشخص کنم و به همین خاطر لازم است طبق دستور ذیل این کار انجام دهیم(تابع Rows تعداد ردیف های محدوده را می شمارد):

row2 = Selection.Rows.Count

و در آخر مجموع اعداد بدست آمده در دستورات بالا را جمع می کنیم و عدد حاصل شده را منهای یک می کنیم تا به عدد درست و مورد انتظار برسیم(چون مقدار row1 را حساب می کنیم و لازم است منهای یک شود):

EndRowNum = row1 + row2

و با اجرای دستور کامل که در فایل ذیل قرار دارد به شماره ردیف آخر محدوده انتخاب شده براحتی دست پیدا می کنیم و از این عدد در کدنویسی های حرفه ای در اکسل می توانیم استفاده کنیم.

دانلود فایل مینی پروژه(.xlsm)


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

ثبت زمان اجرای فایل اکسل با کدنویسی
ارسال در تاريخ دوشنبه سیزدهم آذر ۱۴۰۲ توسط داود خانی

برای خیلی از کاربران پیش آمده که فایل اکسل شان در Server یا در فولدر Shair قرار گرفته و می خواهند بدانند فایل شان در کدام کامپیوتر و در چه تاریخ و ساعتی اجرا شده است؟

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

در این مینی پروژه Sheet2 را به عنوان دیتابیس قرار داده ام تا اطلاعات موردنظر در سلول های ستون B درج گردد.

این شیت را به منظور عدم دسترسی سایر کاربران مخفی کرده ام.

درصورت دسترسی سایر کاربران به این Sheet2، از ویژگی NumberFormat برای عدم نمایش محتوای سلول ها هم استفاده کردم که کار از محکم کاری عیب نمی کند.

اگر ایده ای در این مورد دارید به ایمیل Davoud.kh@gmail.com ارسال بفرمائید.

دانلود فایل (xlsm)


برچسب‌ها: vba, امنیت فایل

نقش مقدار اولیه در متغیّر در vba
ارسال در تاريخ پنجشنبه هجدهم آبان ۱۴۰۲ توسط داود خانی

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

در تصویر نمونه کد را مشاهده می کنید و قبل اط اینکه ویدئوی آموزشی را ببینید ابتدا خودتان را محک بزنید و پاسخ خود را با نتیجه ای که در ویدئو خواهید دید بررسی کنید.

مشاهده ویدئوی آموزش


برچسب‌ها: vba, Variable

استخراج نام Windows با VBA  در اکسل
ارسال در تاريخ سه شنبه شانزدهم آبان ۱۴۰۲ توسط داود خانی

در زبان های برنامه نویسی، تابعی وجود دارد که با آن می توانیم، نام ویندوز و نوع آن را براحتی در کدنویسی استخراج کنیم و در نرم افزاهایی که می سازیم در بدنه آن برای مدیریت اجرای نرم افزار در محیط موردنظر استفاده کنیم.

در اکسل در بخش VBA هم این مورد وجود دارد و اگر وارد محیط Editor کدنویسی اکسل شویم و یک Procedure ایجاد می کنیم و دستور مورد بحث (در نمونه فایل ذیل) را در آن می نویسیم و اجرا می کنیم و به این راحتی نام و نوع Windows را بدست میاوریم.

حالا از این دستور کجا می تونیم استفاده کنیم؟

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

استخراج نام Windows با VBA در اکسل.xlsm


برچسب‌ها: vba, windows, Type

ایجاد محدودیت ثبت در صفحات اکسل(Protect Sheet)
ارسال در تاريخ یکشنبه هفتم آبان ۱۴۰۲ توسط داود خانی

در یکی از گروه های مجازی اکسل و VBA یکی از دوستان مینی پروژه ای را مطرح کردند که اگر در یک Sheet یک سلول مشخص شده دارای مقدار بود(پر بود) هیچ سلولی در آن Sheet مقدار نگیرد یعنی قفل سلول فعال شود.

برای اجرای این مینی پروژه پیشنهاد دادم از Data Validation استفاده کنند و به دلیل استفاده از D.V. در برخی سلول ها برای تهیه لیست، امکان استفاده از D.V. میسر نشد و این مینی پروژه را با کدنویسی انجام دادم و فایل مینی پروژه را برای بهره برداری شما دوست عزیز قرار دادم و امیدوارم در فایل های شخصی مورد استفادا قرار گیرد.

فایل را از اینجا دانلود کنید


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

ایجاد ویژگی placeholder در سلول های اکسل با VBA
ارسال در تاريخ چهارشنبه بیست و ششم بهمن ۱۴۰۱ توسط داود خانی

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

در دنیای کدنویسی در بخش VBA نرم افزار اکسل، امکانات منحصر به فرد و ویژه و کاربردی را می توانیم بسازیم و در صفحات اکسل بر روی هر Object بوجود بیاوریم. یکی از امکاناتی را که عموما در صفحات Web می بینیم باکس هایی که از کاربر مقدار می گیرد مثلا نام و نام خانوادگی و ... در داخل برخی باکس ها عبارت هایی مانند "متن کوتاهی را بنویسید" را حتما دیده اید و به صورت کم رنگ هم نمایش داده می شود و این متن به عنوان راهنمای کاربر است و مشخص می کند در این فیل چه مقداری را وارد کند که این ویژگی در ساخت صفحات Web در بخش CSS با نام placeholder شناخته می شود و مقدار داده شده به آن را در داخل input نمایش می دهد.

حالا این ویژگی را با کدنویسی در VBA برای سلول های صفحه اکسل(سلول های دلخواه در فرم های طراحی شده با صفحه اکسل) ایجاد کردم و علاوه بر جذابیت در اکسل، راهنمای خوبی برای کاربر خواهد بود و این می تواند جایگزین Lable در نامگذاری عنوان فیلدها در فرم شود.

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

فایل پروژه را از اینجا دانلود کنید و کدهای آن را مطالعه و بهره برداری کنید و سوالات خود را به آدرس ایمیل davoud.kh@gmail.com ارسال کنید.

ایجاد ویژگی placeholder در سلول های اکسل با VBA


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه UserForm محاسباتی و نمایشی شناور در صفحات -VBA
ارسال در تاريخ چهارشنبه نوزدهم بهمن ۱۴۰۱ توسط داود خانی

مینی پروژه جالب و حرفه ای دیگر در اکسل در حوزه محاسبه و نمایش نتیجه محاسبه در UserForm در پروسیجر Workbook_SheetSelectionChange که این UserForm به صورت خودکار در تمام صفحات حاضر می شود.

ابتدا بیاییم فرآیند اجرای این مینی پروژه را تشریح کنیم. این فرآیند(سناریور) به این شکل است که اگر کاربر در هر صفحه ای سلول های دارای مقادیر عددی را انتخاب کرد به صورت خودکار، UserForm در صفحه در موقعیت از پیش تعیید شده نمایش داده شود و جمع مقادیر را به همراه محاسبه ده درصدی عدد بدست آمده و نام شیت Active و تعداد سلول انتخاب شده را نشان دهد و پس از 2 ثانیه فرم Close شود(اجرای این پروژه راحت است و اصلا نگران نباشید).

بریم به سمت خود پروژه و بخش به بخش با روش اجرا و کدنویسی آشنا شویم. توجه کنید برای اینکه هر دستوری که منجر به محاسبه و یا نمایش نتایج حاصله شود را بخواهیم با انتخاب سلول های هر شیت(شیت های ایجاد شده و شیت هایی که ممکن است بعدا ایجاد شود(New Sheet)) به صورت خودکار دستورات اجرا شوند سراغ پنجره VBAProject و بخش ThisWorkbook رفته و دابل کلیک می کنیم تا وارد فضای کدنویسی این Object شویم.در محیط از لیست باکس Object گزینه Workbook را انتخاب و از لیست باکس(سمت راستی) Procedure گزینه Workbook_SheetSelectionChange را انتخاب و دستورات اصلی این مینی پروژه را در داخل سابروتن می نویسیم.

در کدنویسی برای نمایش(Show) فرم شرط یا شرط هایی را تعیین می کنیم که با هر انتخاب، UserForm نمایش داده نشود و در این مینی پروژه، دو شرط تعیین می کنیم، یکی از شرط ها انتخاب بیش از یک سلول است و شرط دوم عدد(Number) بودن محتوای اولین سلول محدوده انتخاب شده است که در ذیل کد بررسی کننده را مشاهده کنید(در این مرحله از کدنویسی شرط های متناسب با پروژه مان می توانیم تعیین کنیم) درصورت برقراری شرط ها UserForm نمایش داده می شود در غیر این صورت نماش داده نمی شود:

If Selection.Cells.Count > 1 And IsNumeric(Selection.Cells(1).Value) Then
UserForm1.Show

Else
Unload UserForm1
End If

در ادامه، برای نمایش مقادیر در صورت برقراری شرط ها، از Lable استفاده شده و سه Lable (برای بارگزاری Caption شان) را در UserForm ایجاد می کنیم. در Lable1 در کپشن آن با کمک تابع SUM جمع اعداد انتخاب شده را قرار می دهیم و با تابع Format فرمت خروجی Sum را تعيين مي كنيم(کد ذیل) :

UserForm1.Label1.Caption = Format(WorksheetFunction.Sum(Selection), "#,0")

در Lable2 در کپشن آن ده درصد حاصل جمع بدست آمده را قرار می دهیم(کد ذیل) :

UserForm1.Label2.Caption = Format(WorksheetFunction.Sum(Selection) * 10 / 100, "#,0")

در Lable5 هم تعداد سلول های انتخاب شده را برای کنترل درج می کنیم(کد ذیل):

UserForm1.Label5.Caption = "تعداد سلول انتخاب شده: " & Selection.Cells.Count

به منظور نمایش چند ثانیه ای فرم و بسته شدن خودکار آن، از تابع Wait استفاده می کنیم(کد ذیل):

Application.Wait Now + TimeValue("00:00:02")
Unload UserForm1

و در انتهای کدنویسی می رسیم به مرحله عدم برقراری شرط که اگر این اتفاق افتاد UserForm بسته شود(کد ذیل):

Else
Unload UserForm1

نکته1: برای کدنویسی تمیزتر و کوتاه تر، کدمحاسبه کننده جمع را به یک متغیر تعریف شده می توانیم بدهیم تا در طول کدنویسی هر جا به آن عدد حاصل شده نیاز داشتیم کافی ست نام متغیر را ذکر کنیم.

نکته2: این مینی پروژه برای آشنایی با روش کدنویسی ارائه شده و براساس نیاز و متناسب با سناریوی مان، امکانات بیشتری را می توانیم ایجاد و کدنویسی کنیم.

دوست عزیز، فایل این مینی پروژه را از اینجا دانلود کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

از  Application  در VBA بیشتر بدانیم!
ارسال در تاريخ سه شنبه بیست و هفتم دی ۱۴۰۱ توسط داود خانی

نرم افزار اکسل در بخش VBA شیئی به نام Application دارد که مادر بخش کدنویسی در VBA محسوب می شود و دسترسی به تمام توابع و ویژگی های اشیاء و توابع را به برنامه نویسی می دهد.

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

فایل را از اینجا دانلود کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

نمونه داشبورد در اکسل(فقط فرمول نویسی حرفه ای و کاربردی)
ارسال در تاريخ چهارشنبه بیست و یکم دی ۱۴۰۱ توسط داود خانی

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

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

قبل همه صحبت هایم از اینکه فرصت نشد توضیحاتی را در مورد پروژه های فایل خدمت شما تقدیم کنم پوزش می طلبم و می دانم بهتر بود شرحی هر چند مختصر، در مورد پروژه های فایل می دادم و این بخش را در اختیار خودتان قرار می دهم و اگر به سوالی برخورد کردید در ایمیل davoud.kh@gmail.com برای بنده ارسال بفرمائید تا با افتخار، در کنار شما باشم.

دانلود فایل


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

تابع محاسبه مالیات بر حقوق سال 1401
ارسال در تاريخ شنبه بیست و ششم آذر ۱۴۰۱ توسط داود خانی

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

نکته: این تابع فقط برای محاسبه مالیات برحقوق سال 1401 کاربرد دارد.

استفاده از این تابع توسط Add-Ins بخش Options اکسل انجام می پذیرد و افزودن آن به اکسل بسیار راحت است و آموزش کامل روش افزودن آن را در این ویدئو ببنید

فایل تابع را از اینجـــــا دانلود کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه طراحی سودوکو 9*9 در اکسل
ارسال در تاريخ یکشنبه ششم آذر ۱۴۰۱ توسط داود خانی

از قابلیت های موجود در نرم افزار اکسل و همچنین انعطاف پذیری آن در کدنویسی در یک مینی پروژه برای طراحی سودوکو 9 * 9 استفاده کردم و در یک صفحه ابتدا جدول سودوکو موردنظر را ایجاد کردم و سپس با مشورت با سردبیر مجله نابغه روش حل و قوانین جدول را دریافت کردم تا بتوانم آن قوانین را و ایجاد منطق های محاسباتی با کدنویسی در vba پیاده سازی کنم تا مخاطب با درج مقدار(عدد یا حروف) در هر خانه جدول، مقدار را از نظر تکراربودن در خانه های 9تایی و نیز در طول ردیف و ستون آن خانه بررسی و در صورت تکرار بودن در محدوده ذکر شده هشدار از نوع رنگی کردن سلول را به مخاطب بدهد.

متاسفانه با توجه به کمبود وقت، فرصت نشد فرآیند کدنویسی را خط به خط توضیح دهم و همین مطالب را در لابلای کارهایم برای شما نوشتم تا حداقل با یک مینی پروژه خوب و حرفه ای در اکسل و vba آشنا شوید و برای بهره برداری شما دوست عزیز، فایل پروژه را در ذیل برای دانلود در اختیار شما قرار می دهم.

امیدوارم در یک فرصت مناسب بتوانم ویدئوهای آموزشی این مینی پروژه و صدها مینی پروژه دیگر را تهیه و تقدیم نگاه های پرمهر شما کنم.

فایل پروژه را از اینجا دانلود کنید


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه کنترل مقدار عدد با Do While-Loop در VBA
ارسال در تاريخ شنبه بیست و یکم آبان ۱۴۰۱ توسط داود خانی

در مینی پروژه ساده با حلقه Do While - Loop یک کار کنترلی را یاد خواهیم گرفت، مثلا اگر در حلقه، عدد تولید شده از عدد 15 کوچکتر و یا مساوی باشد بیاد یک مقداری را برگرداند و در Debug عدد را Print کند.این عددی که گفتم در نتیجه چرخش حلقه بوجود میاد و تابع While شرط را بررسی می کند و در صورت برقراری شرط حلقه را متوقف می کند.

در این پروژه کوچک، متغییری به نام n داریم و در ابتدا به آن مقدار 0 را می دهیم:

n=0

در خط بعدی کد بررسی شرط را می نویسیم که بیاد عددهای تولید شده را که به متغیر n می دهد را بررسی کند:

Do While n <= 15

و اگر شرط بالا برقرار نباشد حلقه به کار خودش ادامه می دهد و در ادامه حلقه درستور ذیل اجرا می شود و آن هم افزودن عدد 3 به مقدار قبلی متغیر n است و هر بار که حقله تکرار می شود اگر شرط برقرار نباشد عدد 3 به مقدار قبلی n اضافه می شود:

n = n + 3

و این Loop است که موجب چرخش حلقه می شود و در ادامه، با اتمام حلقه، آخرین مقداری که به n داده می شود را در Debug چاپ کرده که در صفحه Immediate Window نمایش داده می شود

و در این پروژه عددی که حاصل محاسبه دستور نوشته شده است مقدار 18 است و با اجرای آن در یک فایل اکسل براحتی به جواب دست پیدا خواهید کرد.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه تهیه لیست داده ستون های جدول در اکسل(VBA)
ارسال در تاريخ دوشنبه دوم آبان ۱۴۰۱ توسط داود خانی

در فایل های اکسل گاهی جداولی با داده های بسیار زیاد برای آنالیز و مطالعه اطلاعات به دست ما می رسد و برای تهیه گزارش هایی از جنس آنالیز مجبور هستیم بر مبنای نوع فرآیند تهیه گزارشها، از گزینه های برخی ستون ها لیستی تهیه کنیم و راجع به آنها محاسباتی را انجام دهیم و ممکن است این نوع گزارش ها در طول سال تکراری باشند و ما مجبور شویم هر سری فایل حاوی اطلاعات دستمان که رسید از اول تمام فرآنید تهیه گزارش را طی کنیم و این وقت و انرژی زیادی را از ما می گیرد. لذا برای رفع چنین مشکلات دست و پا گیر می توانیم گزارش های پرتکرار را به صورت قالب گزارشی در اکسل بسازیم و با روش های بسیار متنوعی از جمله ابزارها، فرمو نویسی و حتی کدنویسی در بخش VBA فرآیند محاسبات را تعریف کرده و از تکرار کردن عمل محاسبات و تهیه گزارش جلوگیری کنیم.

برای همین منظور، برای شما دوست گرامی، روش ساده و حتما کاربردی را با کدنویسی در قالب یک مینی پروژه معرفی و آموزش می دهم و کدها و روش پیاده سازی و آدرس دهی های این مینی پروژه را متناسب با داده ها و گزارش هایتان می توانید تغییرات لازم را اعمال کرده و در فایل خود استفاده کنید.

در این پروژه، جدولی که دارای اطلاعات یک حساب است را تعبیه کرده و تمام حساب ها ، اطلاعاتشان در این جدول ثبت می شود و هدفی را که دنبال می کنیم این است که بتوانیم به شکل پویا و کاملا خودکار، لیست نام حساب ها را تهیه و به جدول دیگری منتقل کرده تا بتوانیم تراکنش های هر حساب را جداگانه و سریع محاسبه و به نتایج مدنظر دست پیدا کنیم و این فرآیند همان طور که گفتم باید به صورت خودکار و دقیق انجام شود.

تمام دستورات کدنویسی شده پروژه را که جلوتر توضیح خواهم داد می توانید در رخدادهای صفحه موردنظر و یا از طریق کلید و یا هر رخداد دیگری که متناسب با فایل تان است اجرا کنید و این موجب خودکارسازی اجرای دستورات خواهد بود.

حالا بپردازیم به توضیحات کد ها و ببینیم چه توابع و چه ویژگی هایی با چه روش کدنویسی بکار بگیریم تا بتوانیم هدف پروژه را تامین کنیم.

در پروسیجری به نام List_Data_Array(هر اسم دیگری را هم می توانید تعریف کنید) برای فراخوان داده های ستون نام حساب/اشخاص در داخل محاسبات و ارزیابی از حلقه For-Next استفاده شده و تابع شرطی IF میاد تک تک داده سلول های ستون نام حساب/اشخاص را از نظر تعدادشان در ستون بررسی می کند و اگر تعداد آن داده در ستون از ابتدای ستون تا سلول خود داده، یک بود را به جدول لیست منتقل کند که در پروژه نتیجه این محاسبه و ارزیابی آن به متغیری به نام calcCrit داده می شود. ارزیابی تعداد داده در محدوده تعریف شده بر عهده تابع CountIf گذاشته شده است.

به منظور درج داده های مشمول شرط در جدول مقصد که همان لیست نام حساب/اشخاص است بایستی شماره ردیف آخرین ردیف جدول را پیدا کنیم تا به ردیف پائینی آن برای درج داده به عنوان سند جدید یا رکورد جدید دست پیدا کنیم و در این پروژه از یک شمارنده ای به نام cntD2 استفاده کرده ام و روش های دیگری هم برای یافتن شماره ردیف آخرین ردیف جدول وجود دارد و هر کدام بهتر و راحت تر بود می توانیم انتخاب و در کدنویسی اتخاذ کنیم.

تابع Range در خط دوم وظیفه پاکسازی جدول مقصد را دارد و از ویژگی ClearContents که فقط داده های جدول را حذف می کند استفاده شده و بُردرهایی که در در زمان درج داده در جدول نقش می بندد از ابزار Conditional Formatting استفاده شده که ابزار مناسبی برای تولید جدول به تعداد ردیف داده های منتقل شده است.

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

فایل پروژه را از اینجــــــا دانلود کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه جمع اعداد ستون انتخابی با VBA(پویا)
ارسال در تاريخ یکشنبه یکم آبان ۱۴۰۱ توسط داود خانی

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

در این پروژه که می خواهم راجع به آن صحبت کنم جدولی کوچک که دارای یک ستون نام کالا و سه ستون حاوی عدد را در فایل اکسل ایجاد کرده ام و هدفی را که دنبال می کنم این است که هر سلولی از سه ستون دارای عدد را با ماوس انتخاب می کنم جمع اعداد ستون سلول انتخاب شده را در سلولی تعریف شده(در این پروژه سلول G2 است) نمایش دهد.

در کدنویسی این مینی پروژه از ویژگی های Column و End و Row و Range و ActiveCell و Cells و سایر ویژگی ها استفاده شده و ترکیبی از توابع و ویژگی ها دستوری نوشته شده که وظیفه آن این است که کاربر سلولی را که در ستون موردنظر انتخاب می کند دستور بیاد محدوده بین اولین سلول ستون از جایی که عدد وارد شده تا آخرین ردیف ان ستون را استخراج کند و به متغیری به نام Sumrng تحویل دهد و این آدرس استخراج شده(که دستور به صورت پویا استخراج می کند) یه تابع SUM داده می شود تا اعداد محدوده تحویلی را مجع بزند و در داخل سلول G2 درج کند. این دستور در Procedure شیت مورد نظر در Worksheet_SelectionChange صدا زده و با انتخاب سلول با ماوس یا با کلیدهای جهت دار کیبرد دستور به راحتی اجرا و نتجه حاصل می شود.

این یک روش ساده و حرفه ای از روش کدنویسی VBA در اکسل است و روش ها و فرآیندهای پیچیده تر و خلاقانه تر این هم می توانیم متناسب با پروژه هایمان کدنویسی کنیم.

نمونه فایل پروژه را از اینجـــــــا دانلود کنید


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

استخراج قیمت آخرین خرید کالا براساس تاریخ شمسی(فرمول آرایه ای)
ارسال در تاريخ چهارشنبه بیست و هفتم مهر ۱۴۰۱ توسط داود خانی

در جدول اطلاعات خرید و فروش کالا در نرم افزار اکسل که اطلاعات خرید / فروش کالا(اعم از تاریخ ، نام کالا و قیمت واحد کالا) به صورت درهم ثبت می شود و ترتیب ثبت هم مراعات نشده، با فرمول نویسی پیشرفته و ترکیبی(مانند آرایه ها) براحتی می توانیم قیمت آخرین خرید کالا را بدست بیاوریم.

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

برای محاسبه و یافت قیمت آخرین خرید کالا از توابع MAX,INDEX,MATCH,IF استفاده شده و شرط بکار برده شده در این فرمول از ویژگی های فرمول آرایه ای استفاده شده است و شرط های این فرمول وظیفه بررسی خالی نبودن ستون نام کالا و بررسی مساوی بودن تک تک نام کالاها در ستون مربوطه با نام کالای انتخاب شده(در این پروژه سلول D2) را برعهده دارند.

قبل از پرداختن به توضیحات بخش بخش فرمول ترکیبی ، باید عرض کنم چون در این پروژه از تاریخ شمسی استفاده شده و توابع بتوانند با توجه به تاریخ من، محاسبات را به درستی انجام دهد باید تاریخ در ستون تاریخ بایستی بدون "/" ثبت شود و توسط Format Cells در تب Number گزینه Custom نوع فرمت را 00"/"00"/"0000 قرار دهیم که علامت "/" در تاریخ نمایش داده شود. دلیل این عملیات این است که در فرمول، تابع MAX با توجه به شرط های اعمال شده وظیفه استخراج بزرگترین تاریخ را دارد و اگر تاریخ با علامت "/" ثبت شود تابع MAX نمی تواند تاریخ بزرگتر را شناسایی کند.

توضیحات بخش به بخش فرمول:

بخش اول:

تابع IF در فرمول زیر وظیفه بررسی دو شرط خالی نبودن سلول های ستون نام کالا و برابر بودن نام کالاهای همان ستون با مقدار(نام کالای انتخاب شده) سلول D2 را برعهده دارد و در صورت برقراری شرط اعضای آرایه، محتوای سلول های ستون تاریخ را بر می گرداند:

(IF((D7:D15<>"")*(D7:D15=$D$2);(C7:C15))

بخش دوم:

تابع MAX نتیجه تابع IF را که لیست تاریخ ها است را دریافت و بزرگترین تاریخ را بر می گرداند:

MAX(IF((D7:D15<>"")*(D7:D15=$D$2);(C7:C15)))

بخش سوم:

خروجی تابع MAX در اختیار تابع MATCH قرار داده می شود و این تابع، شماره ایندکس تاریخ بزرگتر را در محدوده داده شده را بر می گرداند.

MATCH(MAX(IF((D7:D15<>"")*(D7:D15=$D$2);(C7:C15)));C7:C15;0)

بخش چهارم:

در آخر هم شماره ایندکس حاصل از فرمول بخش سوم، به آرگومنت دوم تابع INDEX داده شده و آدرس داده های ستون قیمت در آرگومنت اول تابع تعریف شده تا براساس عدد ایندکس، مقدار آن در محدوده E7:E15 پیدا کند و برگرداند.

=INDEX(E7:E15;MATCH(MAX(IF((D7:D15<>"")*(D7:D15=$D$2);(C7:C15)));C7:C15;0))

نکته:

در نوشتن فرمول آرایه ای که اجزای فرمول ، متشکل از توابع اکسل و عملیات ریاضی است برای اینکه به اکسل اعلام کنیم فرمول درج شونده در سلول ، آرایه ای است حتما برای درج فرمول، کلیدهای Ctrl+Shift+Enter را باهم بزنید.

امیدوارم مطالب مورد استفاده شما قرار گرفته باشد.

فایل پروژه را از اینجـــــــــا دانلود کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه زمانبندی اجرای دستور و شمارش تعداد اجرا با کدنویسیvba
ارسال در تاريخ سه شنبه دوازدهم مهر ۱۴۰۱ توسط داود خانی

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

در یک مینی پروژه که الان راجع به آن می خواهم توضیح دهم نمونه ای از مباحث فوق را به شکل ساده و که عمل شمارش عدد از 1 تا 10 و همچنین شمارش تعداد اجرا را اجرا می کند را ارائه دهم تا روش کدنویسی در vba را با برخی توابع و پراپرتی های پرمصرف vba برای پیاده سای فرآیند آشنا شوید و در فایل های مهم و محاسبات کنترلی بتوانید استفاده کنید.

در این پروژه، تابع OnTime از پراپرتی های Application بوده و از لحظه( Now ) تا یک مقدای از زمان(ساعت) که با تابع TimeValue به Now اضافه و به متغیر داده می شود در حافظه ذخیره و در ساعت دوم دستور حاوی پروسجیری که در تابع OnTime در آرگومنت procedure نامش ذکر می شود را اجرا می کند و این دستور مدام در حال چرخه اجرای مجدد در میاید.

حال با این شرایط دستور مدام اجرا شده و برای متوقف کردن اجرای دستور، در این پروژه از تابع IF استفاده شده و سلولی که عدد حاصل از شمارش مورد هدف قرار داده و اگر عدد به 10 برسد دستور عدم اجرای مجدد را که در آرگومت schedule تابع OnTime با ذکر گزینه False صادر و اجرای تمام دستورات داخل پروسیجر(نام پروسیجر در ایم پروژه Active_Rob_Proc است) متوقف می شود.

از این شیوه می توانید بجای عدد شمارشی از ساعت استفاده کنید تا دستورات در ساعت موردنظر شما اجرا شده و هر محاسبه و کاری را که لازم دارید در همان ساعت اجرا شود مانند تهیه پشتیبان از صفحات اکسل، تهیه گزارش و ارسال در مسیری تعریف شده برای بارگزاری داشبوردها و صد ها روش دیگر...

فایل مینی پروژه را از اینجــــــا دانلود کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه تشخیص اعداد با مضرب خاص با کدنویسی VBA
ارسال در تاريخ دوشنبه یازدهم مهر ۱۴۰۱ توسط داود خانی

در جدول اعداد برای یافتن ، جداسازی و یا حذف برخی اعداد سلول ها در اکسل براساس مضرب اعداد موردنظر، با فرمول نویسی و کدنویسی در بخش VBA مي توانيم انجام دهیم و براحتی و با سرعت داده های بسیار زیادی را در معرض محاسبه دقیق قرار داده و نتیجه ایده آل را بدست بیاوریم.

در این مینی پروژه، سعی بر آن شده در یک ردیف 8 ستونی و یک ستون در 8 ردیفی اعداد 1 تا 8 را نوشته و با دو حلقه تو در تو For-Next محاسبه ضرب اعداد انجام می شود و سپس با تابع شرطی و مهم IF شرط مضرب اعداد ارزیابی و اگر عدد سلول مضربی از عدد موردنظر بود دستور Cells(i, j).Interior.Color رنگ سلول را تغییر می دهد(برای تغییر رنگ سلول از تابع RGB استفاده شده است).

نکته ای که در این مینی پروژه وجود دارد رنگ تک تک سلول ها قبل از محاسبه شرط، اگر سلول رنگ زمینه داشت توسط دستور Cells(i, j).Interior.Pattern = xlNone حذف شده و اگر مشمول شرط شد رنگش تغییر می کند.

فایل پروژه را از اینجـــــــــا دانلود کنید


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

اعمال تغییرات فرمت در سلول ها با کدنویسی (VBA) در اكسل
ارسال در تاريخ یکشنبه دهم مهر ۱۴۰۱ توسط داود خانی

در صفحات اکسل برای اعمال تغییرات فرمت برروی سلول ها بطور معمول از ابزارها و امکانات Format Cells استفاده می شود و اگر بخواهیم این عمل تغییرات به صورت خودکار و در نتیجه یک عملکرد برروی سلول ها انجام شود باید به سراغ کدنویسی در vba فايل اکسل برویم و با کمک پراپرتی های مربوط به فرمت سلول در توابع Range,Cells,Selection,Target,Activecell (انتخاب هر کدام با توجه به پروژه و سناریو) تغییرات فرمت را اعمال کرده و نمایش وضعیت سلول ها را در نتیجه انجام محاسبات و یا ایجاد جداول دلخواه با کدنویسی مدیریت و از تکرار اجرای فرمت بندی جلوگیری کنیم.

در این مینی پروژه،با کمک تابع With-End-With برای محدوده Range("E5:H6") در Sheet1 فرمت خاص و دلخواه را بوجود آورده و با برخی پرارتی ها ، رنگ سلول، ترکیب چند سلول، انواع بُردر و تعریف نام محدوده(Name Manager) را در محدوده تعریف شده اعمال کرده ام و این مقدمه و آشنایی با روش اعمال تغییرات به صورت یکجا برای یک محدوده از صفحه اکسل است و نمونه فایل مینی پروژه را از اینجــــــــا برای مطالعه و بهره برداری می توانید دانلود کنید.

به منظور بهبود آموزش در این وبلاگ، بنده را از نظرات ارزشمندتان بهره مند سازید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه واکنش گرایی در اکسل با کدنویسی در VBA
ارسال در تاريخ شنبه نهم مهر ۱۴۰۱ توسط داود خانی

در نرم افزار اکسل مانند سایر نرم افزارها و صفحات تحت Web که همه هم دیدیم بحث واکنش گرایی است و در اکسل هم این شرایط را به تناسب پروژه هایمان در بخش های نرم افزار می توانیم بوجود بیاوریم. در یک مینی پروژه، در اکسل توسط کدنویسی یک واکنش گرایی را ایجاد کردم و آن واکنش نمایش پیام برای کاربر در شرایط قفل صفحه است و با پراپرتی ProtectScenarios وضعیت قفل صفحه(Sheet) را ارزیابی کرده که اگر قفل صفحه فعال بود، پیام یا متن درخواستی را در MsgBox نمایش داده و اگر شرایط بر عکس این بود پیام را در سلول [C3] نمایش دهد.

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

نمونه فایل مینی پروژه را از اینجـــــا دانلود کنید.

به منظور بهبود آموزش در این وبلاگ، بنده را از نظرات ارزشمندتان بهره مند سازید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه لیست صفحات قفل شده و قفل نشده با کدنویسی VBA
ارسال در تاريخ سه شنبه بیست و نهم شهریور ۱۴۰۱ توسط داود خانی

به منظور مدیریت و حفاظت سریع و حرفه ای از داده های صفحات اکسل و تشخیص وضعیت قفل صفحات(Sheet) می توانیم با کدنویسی در بخش VBA اکسل این نیاز را تامین و در فایل های کاری مهم به اجرا در بیاوریم.

در این مینی پروژه سعی بر آن شده که فقط لیست تفکیکی صفحات قفل شده و قفل نشده را تهیه و به کابر نشان داده شود و بر این اساس می توانیم دستورات دیگری در ادامه کدها قرار دهیم تا شرایطی را که مورد هدف است را در فایل اجرا کنیم. به عنوان مثال، پس از شناسایی صفخات قفل نشده، قفل صفحه(Protect sheet) آنها را حتی با رمزگذاری، فعال کنیم.

تشخیص وضعیت فعال و غیر فعال بودن قفل صفحه اکسل بر عهده پراپرتی ProtectScenarios است و از نوع Boolean ها است و مقدار True یا False را بر می گرداند.

نمونه فایل پروژه را از اینجــــــــا دانلود کنید.

به منظور بهبود آموزش در این وبلاگ، بنده را از نظرات ارزشمندتان بهره مند سازید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

مینی پروژه جمع اعداد سلول های رنگی با کدنویسی(VBA)
ارسال در تاريخ دوشنبه بیست و هشتم شهریور ۱۴۰۱ توسط داود خانی

در صفحه اکسل و در جداول ایجاد شده در آن گاهی به منظور کنترل اسناد و مقادیر، لازم است برخی سلول ها را رنگی و اعداد سلول های رنگ شده را جمع بزنیم و یا محاسباتی را انجام دهیم. در این پروژه نمونه کوچکی از این شرایط محاسباتی را با کدنویسی در VBA انجام داده ام که با انتخاب سلول رنگی مورد نظر در ستون مربوطه، کدها رنگ داخل سلول را مورد هدف قرار داده و در سلول های محدوده تعریف شده کنترل شماره رنگ را انجام داده و در آخر اعداد سلول های دارای شماره رنگ مساوی با شماره رنگ سلول انتخاب شده را جمع و در سلول تعریف شده درج می کند.

در این پروژه روش اجرای دستور با زدن کلید انتخاب شده و شما می توانید دستورات و کدها را در پروسیجر Worksheet_SelectionChange همان صفحه تعبیه کنید و با انتخاب یک سلول رنگی، به سرعت محاسبه انجام شود.

تابعی به نام KH_Sum_CellColor که در این وبلاگ قرار داده ام و این تابع می تواند در فرمول نویسی استفاده شود و عملکردی مشابه همین پروژه را انجام می دهد.

فایل پروژه را از اینجا دانلود کنید.


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

پروژه تشخیص نام ردیف و ستون بر اساس بزرگترین مقدار در محدوده انتخاب در اکسل
ارسال در تاريخ پنجشنبه پنجم خرداد ۱۴۰۱ توسط داود خانی

 

 

در این پروژه اکسلی، در گزارش جدولی مربوط به فروش تعدادی کالا براساس نام کالا و ماه، با استفاده از کدنویسی در vba و همچنین با استفاده از Conditional Formatting براحتی و سریع  آمار بیشترین فروش مربوطه را استخراج شده است. نحوه کدنویسی و روش اجرا در صفحه اکسل در این پروژه را به منظور مطالعه علاقمندان اکسل در قالب فایل اکسل قرار می دهم تا دوستان بتوانند از اکسل با حداکثر دانش بتواند در راستای مدیریت خرفه ای داده ها استفاده کنند.

 

دانلود فایل پروژه


برچسب‌ها: vba, excel, Coding, برنامه_نویسی_در_اکسل

ساخت تابع در اکسل - جایگزین فرمول(ساده - پیشرفته -آرایه‌ای)
ارسال در تاريخ جمعه بیستم دی ۱۳۹۸ توسط داود خانی

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

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

روش استفاده از فایل ارائه شده به این صورت است که فایل را در مسیر مشخصی در سیستم قرار دهید و سپس یک فایل جدید و یا ذخیره شده(مهم نیست کدام اجرا شود) را اجرا کنید. از بخش File اکسل ، Options را باز کنید. از پنجره باز شده، از گزینه های سمت چپ گزینه Add-Ins را انتخاب کنید. در پایین پنجره، بخش Manage گزینه Excel Add-Ins که به صورت پیش فرض انتخاب شده، برروی کلید Go بزنید تا پنجره Add-Ins باز شود.

از پنجره باز شده کلید Browse را زده و فایل مورد بحث را انتخاب کنید. نام فایل در لیست Add-Ins available قرار می گیرد. نام فایل به منظور فعال بوده بایستی تیک دار باشد.

ماژول فایل با این روش در آفیس سیستم ایجاد می‌شود. برای دسترسی به توابع اضافه شده، از تب Formulas بخش Insert Function را انتخاب می کنیم و سپس از پنجره باز شده لیست بازشونده Or select a category گزینه User Defined را انتخاب کرده و از لیست توابع(Select a function) تابع مورد نظر را انتخاب می کنید.

* با توجه به مطالعه نیاز کاربران و درخواست‌های دریافتی از ایران و سایر کشورها، ماژول‌های این فایل بیشر خواهد شد و در اختیار شما قرار خواهد گرفت *

توابع ساخته شده و اضافه به اکسل(Add-Ins)

مشخصه توابع با پیشوند KH در لیست توابع به راحتی قابل شناسایی است

1- KH_Ext_Numeric : جداسازی عدد از متن در سلول

2- KH_Adad_posv : جمع اعداد مثبت در محدوده (جایگزین فرمول آرایه ای)

3- KH_Sum_CellColor : جمع سلول های رنگی(یکسان) در محدوده

4-KH_Count_Fac: شمارش تعداد گزینه‌های تکراری در محدوده(ستون)

5- KH_FileSz: نمايش حجم فایل فعال

توضیحات - در آرگومان Show_MSG اگر مقدار یک را وارد کنید در صورت عدم شناسایی محل ذخیره فایل(در صورت ذخیره نبودن فابل) پیام بصورت Msgbox اعلام می شود و اگر مقدار صفر وارد کنیم پیام Msgbox اعلام نمی شود و فقط پیام در سلول درج می شود.

6- KH_TimeAlarm : تابع هشدار و یادآوری(بصورت متن در سلول و پیام Msgbox)

توضیحات: دارای چهار آرگومان است که آرگومان اول ساعت، آرگومان دوم دقیقه، آرگومان سوم انتخاب سلول(متن یادآوری) و آرگومان چهارم تعیین وضعیت پیام Msgbox(عدد0 عدم نمایش Msgbx و عدد 1 نمایش Msgbox)

7-KH_A_Printer: تابع اعلام چاپگر فعال در سلول(بدون آرگومان)

8-KH_2VLOOKUP: تابعی جستجوگر از جنس VLOOUP که تابع اصلی قابلیت جستجوی یک پارامتر را دارد ولی در تابع جدید(KH_2VLOOKUP) تعداد دو پارامتر را برای جستجو دریافت می کند. این تابع دارای شش آرگومان است و اگر پارامترهای مشابه در دو ستون را پیدا کند برعکس VLOOKUP آخرین مقدار یافت شده را بر می گرداند.

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

تفاوت اساسی تابع جدید با تابع VLOOKUP در آرگومان دوم (Table_arrya) است که محدودتی در نحوه جستجو فراهم می کرد. این مشکل در تابع KH_2VLOOKUP حل شده و مورد جستجو محدود به جدول(محدوده) و اینکه در جدول پیش از ستون مقدار یافت شده باشد نیست و در آرگومان های اول و سوم(Range_1 , Range_2 ) در تابع جدید، فقط آدرس ستون را وارد می کنید(با شماره ردیف یکسان).

9-KH_WordsCntSelection: این تابع آدرس یک سلول یا بیش از یک سلول را در آرگومنت Range دریافت می کند و تعداد کلمات موجود در محدوده را می شمارد.

10-KH_char_Count: این تابع، آدرس یک سلول را در آرگومنت cell دریافت کرده (محتوای درون سلول رشته یا فرمول باشد مهم نیست) و محتوای آرگومنت chr که نوع آن رشته تعریف شده است (کاراکتر در داخل دو " " قرار دهید) را در داخل رشته آرگومنت اول بررسی و تعداد آن را بر می گرداند.

ویدئوی آموزش تابع KH_2VLOOKUP

______________________________________________________________________

دانلود فایل

توضیحات در ویدئو


برچسب‌ها: اکسل, برنامه نویسی, excel, vba

اسلایدر