Excel 如果打开另一个工作簿,用户定义函数的计算结果为零

Excel User Defined Function evaluates to zero if another workbook is opened

我在 Excel VBA 中创建了一个用户定义函数 (UDF),它从 2 列中获取内容并计算结果。当没有其他工作簿打开时,UDF 计算正确,但当任何其他工作簿同时打开时更改为零。我认为问题出在前几步,我在其中阅读了输入:

Set Sheet = ThisWorkbook.Worksheets(inputSheet)
For i = 0 To numrows
    array_multi(i, 0) = Cells(inputRow1 + i, inputCol1)
    array_multi(i, 1) = Cells(inputRow2 + i, inputCol2)
Next

有人可以帮我解决这里的问题吗?如果您需要更多详细信息,请告诉我。

在您的代码中,您使用了 Sheet,但在为数组赋值时从未使用过。

Set Sheet = ThisWorkbook.Worksheets(inputSheet)
array_multi(i, 0) = Cells(inputRow1 + i, inputCol1)
array_multi(i, 1) = Cells(inputRow2 + i, inputCol2)

尝试使用 Sht.Cells 以确保您的数组从正确的工作表和工作簿中读取值。

Set Sht = ThisWorkbook.Worksheets(inputSheet)
For i = 0 To numrows
    array_multi(i, 0) = Sht.Cells(inputRow1 + i, inputCol1)
    array_multi(i, 1) = Sht.Cells(inputRow2 + i, inputCol2)
Next

Cells 对象引用 ActiveWorkbook.ActiveSheet 除非符合条件。你可以使用

With ThisWorkbook.Worksheets(inputSheet)
    For i = 0 To numrows
        array_multi(i, 0) = .Cells(inputRow1 + i, inputCol1)
        array_multi(i, 1) = .Cells(inputRow2 + i, inputCol2)
    Next i
End With  

由于 Shai 的回答是 100% 正确的,请接受并点赞他的回答。