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 

在Excel中调用“= Grade(A2)”时,我得到错误消息有一个或多个循环引用,其中公式直接或间接引用其自己的单元格。

我错过了什么?

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

您只需要将该值设置为函数就好像它是一个variables。 代码完成后,它将函数的值返回给调用它的任何东西。 该函数可用于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 

Excel公式的替代scheme以防万一:

 =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)