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% 正确的,请接受并点赞他的回答。
我在 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% 正确的,请接受并点赞他的回答。