循环引用是用户定义的函数VBA excel

时间:2016-10-25 18:40:08

标签: excel vba excel-vba circular-reference

我的目标是使用实际行中的用户定义函数添加某些列的值。列在另一个表中给出。我正在读取行的名称,计算实际值并将它们相加。此函数从excel调用一次但执行了4次。最后它表示循环引用错误。在excel文件中没有这样的错误,我检查了udf只返回42然后没有错误。首先我怀疑是Application.Caller,但是排除了。

Function SumColumnsWithSuffix(suffix As String, rowNumber) As Integer
    'can be used only in Összesíto table
    Dim myTable As Excel.ListObject
    Dim mySheet As Excel.Worksheet
    Dim myRow As Excel.ListRow

    Set mySheet = ThisWorkbook.Worksheets("összesíto")
    Set myTable = mySheet.ListObjects("Számlák")
    Dim columnName As String

    result = 0

    For Each myRow In myTable.ListRows
        columnName = Intersect(myRow.Range, myTable.ListColumns("Oszlop név").Range)
        columnName = "Összesíto[" & columnName & " " & suffix & "]"
        'actualRow = Application.Caller.row
        'rowName = actualRow & ":" & actualRow
         rowName = rowNumber & ":" & rowNumber
         myRowRange = Range(rowName)
         actualValue = Intersect(Range(columnName), Range(rowName))
         result = result + actualValue
     Next myRow

    SumColumnsWithSuffix = result
End Function

1 个答案:

答案 0 :(得分:1)

myRowRange未显式声明(或实际使用),因此它隐式为Variant。这意味着你的任务......

myRowRange = Range(rowName)

...也在对.Value进行隐式调用。该调用将评估Range(rowName)中每个单元格的结果,以填充它返回的Variant数组。如果这些单元格的任何包含对SumColumnsWithSuffix的调用,您将获得循环引用。