如果打开另一个工作簿,则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%正确的,请接受并提出他的回答。