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

我已经在Excel VBA中创build了一个用户定义函数(UDF),它从2列中提取内容并计算结果。 当没有其他工作簿打开时,UDF会正确评估,但在同时打开任何其他工作簿时更改为零。 我认为这个问题是在前几个步骤,我读了input:

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 

有人可以帮我解决这个问题吗? 让我知道如果你需要更多的细节。

在你的代码中,你可以使用表格 ,当你给数组赋值的时候,你永远不会使用它。

 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%正确的,请接受并提出他的回答。