برنامه نویسی رویه ای در VBA | محاسبه مالیات حقوق با VBA

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

تعریف

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) را دریافت و مالیات آن را محاسبه می نماید. حالا با ایجاد یک ماکرو جدید مبالغ خالص و مالیات را بطور خودکار مقابل رقم حقوق یک کارمند قرار می دهیم.

در اکسل پیوست این آموزش تابع calcSalaryTax را در یک ماژول استاندارد ذخیره کردیم و بنابراین می توانید در فایل اکسل این آموزش، این تابع را در هر کدام از سلول های اکسل که خواستید استفاده نمایید.
برای اینکار کافیست در سلول موردنظر = و سپس نام تابع را تایپ نمایید.

برای اینکار از زیرروال یا سابروتین 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 نیاز به تغییر خواهد داشت و سایر بخش ها ثابت خواهند بود.
روال، زیرروال، میدان دید و ماژول مفاهیم اصلی در شیوه برنامه نویسی رویه ای می باشند.

مزایای برنامه نویسی رویه ای

با توجه به توضیحات داده شده تقسیم بندی کدها در به روال ها مزایای زیر را دارد:

  • تجزیه کردن کد به گام‌های ساده‌تر
  • کاهش کدهای تکراری
  • امکان استفاده مجدد از کدها و روال ها
  • راحت تر شدن فرایند عیب یابی

دیدگاهتان را بنویسید