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)