在用户定义的函数中使用excel VBA中的多个ThisWorkbook

时间:2016-10-27 16:13:05

标签: excel vba excel-vba

在excel中,我在下面创建了用户定义的函数。我测试它完美无缺。下次打开excel文件时,我得到一个"自动化错误"。我从excel中删除了引用。我尝试通过在第一条指令

处调用过程来调试udf
Set 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

0 个答案:

没有答案