从 MS Excel VBA 代码获取结果为零

从 MS Excel VBA 代码获取结果为零

我对 VBA 编码非常陌生,我想创建一个自定义函数,其中有多个员工,每个员工都有一个学位(级别)。级别越高,他获得的薪水就越多。

共有 7 个度,但在这个例子中,我将其设置为总共 2 度,以便更容易理解。

现在这个主级别“PLevel”被进一步划分为 11 个子级别“SLevel”。在这个例子中,我把它划分得更少了。

因此,基本上,如果员工“Alex”处于 1 级,那么他的起始值是 1000。然后,他会根据自己的 SLevel 值获得额外的 X。
如果 Alex 的 PLevel=1 且 SLevel=2,那么他将获得 1002。

我使用了很多 google 和 youtube 才得出这个结论。问题是结果总是零。
我这样做了:

  1. 打开Excel并创建新模块,编写代码,将文件保存为.xlsm文件。
  2. 在单元格“A2”和“B2”中插入值
  3. 然后在单元格“C2”中写入=Salary(A2,B2)

Function Salary(PLevel As Double, SLevel As Double)

If PLevel = "1" Then
GoTo Line1
ElseIf PLevel = "2" Then
GoTo Line2

End If


Line1:
PLevel = "1000"

    If SLevel = 1 Then
    SalarySum = PLevel + 1
        
        ElseIf SLevel = 2 Then
        SalarySum = PLevel + 2
        
        ElseIf SLevel = 3 Then
        SalarySum = PLevel + 3
        
        ElseIf SLevel = 4 Then
        SalarySum = PLevel + 4
        
        ElseIf SLevel = 5 Then
        SalarySum = PLevel + 5
        
        ElseIf SLevel = 6 Then
        SalarySum = PLevel + 6
        
        ElseIf SLevel = 7 Then
        SalarySum = PLevel + 7
        
   GoTo LastLine
   
    End If
    

Line2:
PLevel = "2000"

    If SLevel = 1 Then
    SalarySum = PLevel + 1
        
        ElseIf SLevel = 2 Then
        SalarySum = PLevel + 2
        
        ElseIf SLevel = 3 Then
        SalarySum = PLevel + 3
        
        ElseIf SLevel = 4 Then
        SalarySum = PLevel + 4
        
        ElseIf SLevel = 5 Then
        SalarySum = PLevel + 5
        
        ElseIf SLevel = 6 Then
        SalarySum = PLevel + 6
        
        ElseIf SLevel = 7 Then
        SalarySum = PLevel + 7
        
   GoTo LastLine
   
    End If


LastLine:


End Function

答案1

您需要return通过一行来说明某事functionName = Value

在你的情况下,你的代码的最后一行应该End Function

Salary = SalarySum

或者不管你的回报是什么。

您可能还需要在声明函数时指定要返回的类型,如下所示:

Function Salary(PLevel As Double, SLevel As Double) As Integer

目前,您的函数缺少 Excel VBA 知道要返回什么的重要部分。

关于 UDF(用户定义函数)所需的绝对最小值的更好指南是如何使用 VBA 在 Excel 中编写用户定义函数 (UDF)

相关内容