برنامه نویسی رویه ای یک شیوه برنامه نویسی است که از برنامه نویسی ساخت یافته مشتق شده است. در این آموزش با استفاده از این شیوه مالیات حقوق سال 99 را در VBA محاسبه می نماییم.
تعریف
VBA کدها را در ماژول ها ذخیره می نماید. در VBA ماژول ها بطور کلی به دو نوع استاندارد و کلاس تقسیم بندی می شوند.
روش برنامه نویسی در ماژول های استاندارد VBA رویه ای می باشد. در این روش کدها به روال های مختلف که هر کدام وظایف خود را انجام می دهند تقسیم بندی و سپس در یک ماژول ذخیره می شوند.
محاسبه مالیات حقوق سال 1399 با استفاده از VBA
برای درک موضوع بگذارید موضوع را با یک مثال عینی تشریح نماییم.
فرض کنید می خواهید براساس بخشنامه حقوق سال 1399 خالص حقوق کارمندان یک اداره را که در محدوده B2 تا B101 قرار گرفته اند را محاسبه نماییم.
برای اینکه خالص حقوق را محاسبه کنیم ابتدا یک ماکرو در اکسل ایجاد می کنیم و تابع زیر را برای محاسبه مالیات حقوق در یک ماژول استاندارد در اکسل ذخیره می نماییم.
Function calcSalaryTax(salary As Double)
Dim tax As Double
Dim lastStep As Double
Dim salaryStep As Variant
Dim taxRate As Variant
Dim i As Integer
lastStep = salary - 150000000
tax = 0
taxRate = Array(0, 10, 15, 20, 25)
salaryStep = Array(30000000, 45000000, 30000000, 45000000, IIf(lastStep > 0, lastStep, 0))
For i = 0 To 4
If salary > 0 Then
If salary > salaryStep(i) Then
tax = tax + salaryStep(i) * taxRate(i) / 100
Else
tax = tax + salary * taxRate(i) / 100
End If
End If
salary = salary - salaryStep(i)
Next
calcSalaryTax = tax
End Function
تابع calcSalaryTax مقدار حقوق (آرگومان salary) را دریافت و مالیات آن را محاسبه می نماید. حالا با ایجاد یک ماکرو جدید مبالغ خالص و مالیات را بطور خودکار مقابل رقم حقوق یک کارمند قرار می دهیم.
برای اینکار از زیرروال یا سابروتین netPay استفاده می نماییم. در این روال با استفاده از حلقه For و ایجاد تکرار روی سلول ها اطلاعات را درج می کنیم.
Sub netPay()
Dim wb As Workbook
Dim ws As Worksheet
Dim salaryRange As Range, taxRange As Range, netRange As Range
Dim i As Integer, j As Integer
Set wb = ThisWorkbook
Set ws = wb.Sheets("sheet1")
j = 2
For i = 2 To 101
Set salaryRange = ws.Cells(i, j)
Set taxRange = ws.Cells(i, j + 1)
Set netRange = ws.Cells(i, j + 2)
taxRange.Value = calcSalaryTax(salaryRange.Value)
netRange.Formula = "=" & salaryRange.Address & "-" & taxRange.Address
Next
End Sub
روشی که در کد نویسی بالا بکار بردیم روش برنامه نویسی رویه ای می باشد. تابع calcSalaryTax بخشی از کد است که قابلیت استفاده مجدد را دارد و می توانیم آن را در سایر روال ها به هر تعداد که لازم داشتیم بکار ببریم.
در صورتی که در سال آتی نیز روش محاسبه مالیات حقوق عوض شود فقط تابع calcSalaryTax نیاز به تغییر خواهد داشت و سایر بخش ها ثابت خواهند بود.
روال، زیرروال، میدان دید و ماژول مفاهیم اصلی در شیوه برنامه نویسی رویه ای می باشند.
مزایای برنامه نویسی رویه ای
با توجه به توضیحات داده شده تقسیم بندی کدها در به روال ها مزایای زیر را دارد:
- تجزیه کردن کد به گامهای سادهتر
- کاهش کدهای تکراری
- امکان استفاده مجدد از کدها و روال ها
- راحت تر شدن فرایند عیب یابی
بیشتر بخوانید
توابع توکار VBA | لیست کامل توابع داخلی در ویژوال بیسیک
عملگرهای VBA | انجام عملیات روی داده ها و ایجاد عبارت ها
حلقه در VBA | ایجاد حلقه برای تکرار دستورات در ویژوال بیسیک
کدهای VBA | آشنایی با کدها و دستور زبان برنامه نویسی VBA
دستور IF | اجرای مشروط کد با استفاده از عبارت های شرطی و منطقی
آرایه در VBA | آرایه ها و کاربرد آن ها در برنامه نویسی
میدان دید متغیر در VBA | نحوه دسترسی به متغیرها در قسمت های مختلف پروژه