功能不起作用 - 显示0

gkm*_*gic 2 excel vba excel-vba

我写了一个简单的函数来计算公司奖金.由于某种原因,它显示0并且没有给出答案.

Function insurancebonus(penetration As Single, penetrationPlan As Single, _ 
    renewalRate As Single, renewalPlan As Single, dealerRank As Single, _ 
    premiumDynamic As Single) As Single
    Dim Total As Single
    Total = 0
    If penetration >= penetrationPlan Then Total = Total + 0.01
    If renewalRate >= renewalPlan Then Total = Total + 0.01
    Select Case dealerRank
    Case 1
        Select Case premiumDynamic
            Case 0 To 0.03: Total = Total + 0.01
            Case 0.03 To 0.05: Total = Total + 0.02
            Case 0.05 To 1: Total = Total + 0.03
        End Select
    Case 2
        Select Case premiumDynamic
            Case 0.02 To 0.04: Total = Total + 0.01
            Case 0.04 To 0.08: Total = Total + 0.02
            Case 0.08 To 1: Total = Total + 0.03
        End Select
    Case 3
        Select Case premiumDynamic
            Case 0.05 To 0.1: Total = Total + 0.01
            Case 0.1 To 0.15: Total = Total + 0.02
            Case 0.15 To 1: Total = Total + 0.05
        End Select
    Case 4
        Select Case premiumDynamic
            Case 0.1 To 0.17: Total = Total + 0.01
            Case 0.17 To 0.25: Total = Total + 0.02
            Case 0.25 To 1: Total = Total + 0.03
        End Select
    Case 5
        Select Case premiumDynamic
            Case 0.15 To 0.3: Total = Total + 0.01
            Case 0.3 To 0.4: Total = Total + 0.02
            Case 0.4 To 1: Total = Total + 0.03
        End Select
    End Select
End Function
Run Code Online (Sandbox Code Playgroud)

Sou*_*ire 8

你没有告诉函数返回任何东西.

我假设你想要返回值Total

如果是这种情况,请在End Function添加以下行之前:

insurancebonus = Total

这指定您的函数应返回值Total.

作为一个非常简短和人为的例子,这个函数只返回1.

Public Function test() As Integer
    test = 1
End Function
Run Code Online (Sandbox Code Playgroud)

关键是您必须将值分配给函数的名称.

为完整起见,如果函数返回Object类型,则必须使用Set关键字,例如:

Public Function testRange() As Range
    Set testRange = Range("A1")
End Function
Run Code Online (Sandbox Code Playgroud)

哪个会返回一个Range对象.