我的目标是使用实际行中的用户定义函数添加某些列的值。列在另一个表中给出。我正在读取行的名称,计算实际值并将它们相加。此函数从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
答案 0 :(得分:1)
myRowRange
未显式声明(或实际使用),因此它隐式为Variant
。这意味着你的任务......
myRowRange = Range(rowName)
...也在对.Value
进行隐式调用。该调用将评估Range(rowName)
中每个单元格的结果,以填充它返回的Variant
数组。如果这些单元格的任何包含对SumColumnsWithSuffix
的调用,您将获得循环引用。