我在Excel VBA中创建了一个用户定义函数(UDF),它从2列中获取内容并计算结果。当没有其他工作簿打开时,UDF会正确评估,但当同时打开任何其他工作簿时,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
有人可以帮我解决这个问题吗?如果您需要更多详细信息,请告诉我们。
答案 0 :(得分:2)
在您的代码中,您使用 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
答案 1 :(得分:0)
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%正确的,请接受并回答他的回答。