在excel中,我在下面创建了用户定义的函数。我测试它完美无缺。下次打开excel文件时,我得到一个"自动化错误"。我从excel中删除了引用。我尝试通过在第一条指令
处调用过程来调试udfSet mySheet = ThisWorkbook.Worksheets("összesíto")
再次出现自动化错误灾难性故障。
表单名称正确;我在监视窗口看到一条错误信息:无法编译模块; "对象变量或带有块变量未设置",之后我的其他UDF也无法正常工作。奇怪的是:下面的函数运行完美,但在关闭文件并重新打开后失败。
更新:我意识到了另一个症状。在错误的文件中,MS excel对象以某种方式相乘,还有更多的工作表和更多的ThisWorkbook对象。只有在我运行udf之后,关闭文件并重新打开它。
更新:我在安装了32位excel的另一台机器上打开了相同的文件(昨天我尝试了64位excel)。这里的udf运行完美,没有自动化错误,我没有看到ThisWorkbook对象的多个版本。
UPDATE:当我从单个单元格调用udf时,我调试执行然后发生了一件奇怪的事情。该功能执行3次。前两次运行给出了错误的结果(Value2行返回错误的0),第三次运行正确。我知道这没有意义。
Function SumHelperTableColumns(columnName As String) As Double
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 tableName As String
Dim tableAndColumnName As String
result = 0
For Each myRow In myTable.ListRows
tableName = Intersect(myRow.Range, myTable.ListColumns("Tábla név").Range)
If tableName <> "" Then
tableAndColumnName = "s_" & tableName & "[" & columnName & "]"
actualValue = Range(tableAndColumnName).Value2
result = result + actualValue
End If
Next myRow
SumHelperTableColumns = result
End Function
Sub TestSumHelperTableColumns()
SumHelperTableColumns ("Havi jövedelem")
End Sub