Excel VBA中的循环引用

时间:2017-10-20 15:26:17

标签: excel vba excel-vba

我试图编写一个简单的Excel VBA函数来从给定单元格中取一个数字并指定一个等级,然后在当前活动单元格中写入该值。

Public Function Grade(rng As Range)
    Dim number As Double
    number = rng.Value

    If number >= 75 Then
        ActiveCell.Value = "A"
    ElseIf number >= 60 Then
        ActiveCell.Value = "B"
    ElseIf number >= 50 Then
        ActiveCell.Value = "C"
    ElseIf number >= 45 Then
        ActiveCell.Value = "D"
    ElseIf number < 45 Then
        ActiveCell.Value = "F"
    End If

End Function

致电&#39; =等级(A2)&#39;在Excel中我收到错误消息 有一个或多个循环引用,其中公式直接或间接引用其自己的单元格。

我错过了什么?

2 个答案:

答案 0 :(得分:3)

您不执行功能操作。你不应该尝试修改单元格或任何东西。 (在您的代码中,每次重新计算函数时,它都会修改您选择的任何单元格。)

您只需将值设置为函数,就好像它是变量一样。代码完成后,它会将函数的值返回到调用它的任何值。该功能可用于Excel公式和VBA。

Public Function Grade(rng As Range)
Dim number As Double
number = rng.Value

If number >= 75 Then
    Grade = "A"
ElseIf number >= 60 Then
    Grade = "B"
ElseIf number >= 50 Then
    Grade = "C"
ElseIf number >= 45 Then
    Grade = "D"
ElseIf number < 45 Then
    Grade = "F"
End If

End Function

答案 1 :(得分:1)

Excel公式替代方案以防万一:

=LookUp(A1,{0,45,50,60,75;"F","D","C","B","A"})
=Char(71-Match(A1,{0,45,45,50,60,75}))
=Mid("FFFFFFFFDCCBBBAAAAAA",A1/5,1)