依據《國家發展計劃委員會檔案計價格[2002]1980号》計算招标代理費的自定義函數
Option Explicit
Function 招标代理費(服務類型 As String, 中标金額 As Double) As Double
Dim brr
If 服務類型 = "貨物" Then '貨物
brr = [{1.50,1.10,0.80,0.50,0.25,0.05,0.01}/100]
ElseIf 服務類型 = "服務" Then '服務
brr = [{1.50,0.80,0.45,0.25,0.10,0.05,0.01}/100]
ElseIf 服務類型 = "工程" Then '工程
brr = [{1.00,0.70,0.55,0.35,0.20,0.05,0.01}/100]
Else
招标代理費 = "error"
Exit Function
End If
If 中标金額 >= 0 And 中标金額 <= 1000000 Then
招标代理費 = 中标金額 * brr(1)
Exit Function
ElseIf 中标金額 > 1000000 And 中标金額 <= 5000000 Then
招标代理費 = 1000000 * brr(1) + (中标金額 - 1000000) * brr(2)
Exit Function
ElseIf 中标金額 > 5000000 And 中标金額 <= 10000000 Then
招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + (中标金額 - 5000000) * brr(3)
Exit Function
ElseIf 中标金額 > 10000000 And 中标金額 <= 50000000 Then
招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + (中标金額 - 10000000) * brr(4)
Exit Function
ElseIf 中标金額 > 50000000 And 中标金額 <= 100000000 Then
招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + 40000000 * brr(4) + (中标金額 - 50000000) * brr(5)
Exit Function
ElseIf 中标金額 > 100000000 And 中标金額 <= 1000000000 Then
招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + 40000000 * brr(4) + 50000000 * brr(5) + (中标金額 - 100000000) * brr(6)
Exit Function
ElseIf 中标金額 > 1000000000 Then
招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + 40000000 * brr(4) + 50000000 * brr(5) + 100000000 * brr(6) + (中标金額 - 1000000000) * brr(7)
Else
招标代理費 = "error"
Exit Function
End If
End Function
以下為給函數添加幫助資訊的代碼
'此過程使用者注冊自定義函數,給自定義函數添加幫助,使用前先運作一次。
Sub 需要運作一次()
Dim 函數名稱 As String '函數名稱
Dim 函數描述 As String '函數描述
Dim 函數類别 As Integer '函數類别
Dim 參數個數(1) '函數參數描述 數組 個數
函數名稱 = "招标代理費"
函數描述 = "國家發展計劃委員會檔案計價格[2002]1980号"
函數類别 = 14
參數個數(0) = "貨物、服務或工程"
參數個數(1) = " "
Call Application.MacroOptions(Macro:=函數名稱, Description:=函數描述, Category:=函數類别, ArgumentDescriptions:=參數個數)
End Sub
以上是代碼,把excel檔案另存為.xlam格式,再加一個customui就基本完美了。