我想在VBA中构建一个Excel函数,用于检查某个单元格中是否存在循环引用。如果有循环引用,我希望函数返回布尔值“TRUE”,否则返回“FALSE”。这是我失败的尝试:
Function CIRC_REF(BadCell As Range) As Boolean
If BadCell.CircularReference = True Then
CIRC_REF = True
Else
CIRC_REF = False
End If
End Function
不幸的是,这只会返回一个#VALUE!评估单元格中的错误。我在工作表上测试了它,A1 = 1,A2 = 2,A3 = A1 + A2 + A3。然后我设置B3 = CIRC_REF(A3)。
答案 0 :(得分:0)
这个问题的最佳解决方案可能不是调用函数,而是使用子过程调用宏。如果您选择包含公式的单元格,那么如果任何单元格具有循环引用,则该过程将返回一个布尔True
到单元格,该单元格位于罪魁祸首单元格右侧的一个列单元格中。您必须更改代码才能更改此行为。例如,一个小的更改将允许您在新工作表上记录包含循环引用的单元格的地址位置。这是代码:
Sub mcrCircularReference()
Dim Cell As Range
Dim CircRefCell As Range
For Each Cell In Selection
Set CircRefCell = Worksheets("Sheet1").CircularReference
CircRefCell.Offset(0, 1).Value = True
Next Cell
End Sub