for 循環可以解決 VBA1 中 錄制宏 中的使用相對引用 問題
1.根據條件判斷 填入相應內容,並刪除空值所在行
Sub bg2()
Dim i As Integer
For i = 2 To 200
'退出條件
If Range("a" & i) = "" Then Exit For
'判斷性別,其中if then語句,then 后面必須換行,否則會出現 編譯錯誤else沒有if 報錯
If Range("e" & i) = "男" Then
Range("f" & i) = "先生"
Else: Range("f" & i) = "女士"
End If
'判斷專業
If Range("B" & i) = "理工" Then
Range("C" & i) = "LG"
ElseIf Range("B" & i) = "文科" Then
Range("C" & i) = "WK"
Else: Range("C" & i) = "CJ"
End If
'刪除空白單元格所在行,對應EXCEL手動操作是選中單元格然后刪除整行
If Range("d" & i) = "" Then
Range("d" & i).Select
Selection.EntireRow.Delete
i = i - 1
End If
Next
End Sub
2.一鍵自動生成工資條
Sub gzt()
'一鍵自動生成工資條
'空 是"",引號內無空格 if中的語句借鑒錄制宏的操作
Dim i As Integer
For i = 3 To 2000 Step 2
If Range("a" & i) = "" Then Exit For
Rows("1:1").Select
Selection.Copy
Rows(i).Select
Selection.Insert Shift:=xlDown
Next
End Sub
3.由工資條一鍵恢復成工資表
Sub gzb()
'由工資條一鍵恢復成工資表
Dim i As Integer
For i = 3 To 2000
If Range("a" & i) = "" Then Exit For
Range("d" & i).Select
Selection.EntireRow.Delete
Next
End Sub
4.(舊)個稅計算公式
Sub gs()
'個稅計算公式
Dim i As Integer
For i = 2 To 2000
If Range("a" & i) = "" Then Exit For
If Range("c" & i) - 3500 <= 0 Then
Range("d" & i) = 0
ElseIf Range("c" & i) - 3500 <= 1500 And Range("c" & i) - 3500 > 0 Then
Range("d" & i) = (Range("c" & i) - 3500) * 0.03
ElseIf Range("c" & i) - 3500 <= 4500 And Range("c" & i) - 3500 > 1500 Then
Range("d" & i) = (Range("c" & i) - 3500) * 0.1 - 105
ElseIf Range("c" & i) - 3500 <= 9000 And Range("c" & i) - 3500 > 4500 Then
Range("d" & i) = (Range("c" & i) - 3500) * 0.2 - 555
ElseIf Range("c" & i) - 3500 <= 35000 And Range("c" & i) - 3500 > 9000 Then
Range("d" & i) = (Range("c" & i) - 3500) * 0.25 - 1005
ElseIf Range("c" & i) - 3500 <= 55000 And Range("c" & i) - 3500 > 35000 Then
Range("d" & i) = (Range("c" & i) - 3500) * 0.3 - 2755
ElseIf Range("c" & i) - 3500 <= 80000 And Range("c" & i) - 3500 > 55000 Then
Range("d" & i) = (Range("c" & i) - 3500) * 0.35 - 5505
Else: Range("d" & i) = (Range("c" & i) - 3500) * 0.45 - 13505
End If
Next
End Sub