Xin giúp đỡ về Code tính mức thế thu nhập cá nhân!

Liên hệ QC

hptraidatcang

Thành viên mới
Tham gia
18/7/11
Bài viết
4
Được thích
0
Kính thưa các anh chị!

Em đang định làm một bảng tính mức thuế thu nhập cá nhân theo các mức của biểu thuế.
Để xác định số tiền thuế phải nộp thì phải tính xem lương của mình thuộc bậc nào. Em viết 1 đoạn code như file đính kèm nhưng gặp các vấn đề sau:
1. Chạy được nếu thu nhập dưới 4 triệu
2. Chạy được nếu thu nhập trên 84 triệu
3. Vòng lặp không kết thúc trong trường hợp thu nhập trên 4t và dưới 84t. !$@!!
Em mới bắt đầu nghiên cứu về VBA nên trình còn gà, không xử lí được tình huống này+-+-+-+, kính mong các anh chị giúp đỡ.
Xin chân thành cảm ơn!!!
 

File đính kèm

  • Salary cal.xlsx
    13.2 KB · Đọc: 11
  • Code.txt
    1,005 bytes · Đọc: 12
Bạn xem trong file đính kèm nhé.
(Cái bảng lũy tiến đó bạn lấy ở TT nào thế?)
 

File đính kèm

  • Salary cal.xlsm
    20.2 KB · Đọc: 21
Upvote 0
Cảm ơn bác nhé. Có điều em muốn thắc mắc về cái đoạn code em viết bị sai ở đâu. Bác làm ơn chỉ em với.
 
Upvote 0
Sub Bacthue()
Dim min As Long
Dim max As Long
Dim bt As Byte
Dim tn As Long
Dim dem As Byte
Dim d As Long
Dim q As Long

Sheets("Sheet2").Select
Range("c7").Select
tn = Range("k5").Value
dem = "0"
If tn <= "4000" Then
bt = ActiveCell.Offset(dem, dem - 1).Value
Else
If tn > "84000" Then
bt = ActiveCell.Offset(dem + 7, dem - 1).Value
Else
If "4000" <= tn <= "84000" Then
While dem < 8
min = ActiveCell.Offset(dem + 1, dem + 1).Value
max = ActiveCell.Offset(dem, dem + 1).Value
If min < tn <= max Then
bt = ActiveCell.Offset(dem + 1, dem - 1).Value
Else
dem = dem + 1
End If
Wend
End If
End If
End If
Range("k6").Value = bt
End Sub

Bạn xem lại các phần mình tô màu nhé...
Sửa lại cho bạn:
Mã:
Sub Bacthue()
    Dim min As Double
    Dim max As Double
    Dim bt As Byte
    Dim tn As Double
    Dim dem As Byte
    
        
    Sheets("Sheet2").Select
    Range("c7").Select
    tn = Range("k5").Value
    dem = 0
        If tn <= 4000 Then
            bt = ActiveCell.Offset(0, -1).Value
        Else
            If tn > 84000 Then
                bt = ActiveCell.Offset(dem + 7, -1).Value
            Else
                If 4000 <= tn And tn <= 84000 Then
                    Do While dem < 8
                        min = ActiveCell.Offset(dem + 1, 0).Value
                        max = ActiveCell.Offset(dem + 1, 1).Value
                        
                        If min < tn And tn <= max Then
                            bt = ActiveCell.Offset(dem + 1, -1).Value
                            Exit Do
                        Else
                            dem = dem + 1
                        End If
                    Loop
                End If
            End If
        End If
    Range("k6").Value = bt
End Sub
 
Upvote 0
Web KT
Back
Top Bottom