Excel Application.Volatile在更改另一工作簿上的值时不重新计算函数
我有一个excel工作簿,在三个用户定义的函数中使用Application.Volatile。下面是其中一个函数的示例,其他两个函数非常相似。他们所做的只是在指定的工作表上查找一个值,然后将该值返回到摘要工作表Excel Application.Volatile在更改另一工作簿上的值时不重新计算函数,excel,vba,Excel,Vba,我有一个excel工作簿,在三个用户定义的函数中使用Application.Volatile。下面是其中一个函数的示例,其他两个函数非常相似。他们所做的只是在指定的工作表上查找一个值,然后将该值返回到摘要工作表 Function estimated_commission(client As Range) As Double Application.Volatile Name = CStr(client.Value) pull_value = Worksheets(Na
Function estimated_commission(client As Range) As Double
Application.Volatile
Name = CStr(client.Value)
pull_value = Worksheets(Name).Range("A500").End(xlUp).Offset(0, 5).Value
estimated_commission = pull_value
End Function
当最终用户仅打开使用函数的工作簿时,函数的工作方式与我的预期相同。工作簿的计算选项设置为“自动”
当用户更改单元格值或保存其他工作簿时,会出现此问题。这些工作簿与具有用户定义函数的工作簿无关。当用户使用函数重新激活工作簿时,所有用户定义的函数都返回#VALUE error。按F9键或重新计算工作表将删除所有错误并返回正确的值
是否有办法防止出现此问题?工作表(名称)
缺少对其工作簿的引用。如果您不引用工作簿,Excel将假定ActiveWorkbook
,它是最上面有焦点/的工作簿。这就是用户切换到的工作簿,它可能没有名为Name
的工作表,因此您的函数会出错并返回#VALUE
请参考此工作簿
,该工作簿是运行代码的工作簿
ThisWorkbook.Worksheets(Name)
工作表(名称)
缺少对其工作簿的引用。如果您不引用工作簿,Excel将假定ActiveWorkbook
,它是最上面有焦点/的工作簿。这就是用户切换到的工作簿,它可能没有名为Name
的工作表,因此您的函数会出错并返回#VALUE
请参考此工作簿
,该工作簿是运行代码的工作簿
ThisWorkbook.Worksheets(Name)
这么愚蠢的错误。。。感谢您的快速回复,工作完美!这么愚蠢的错误。。。感谢您的快速回复,工作完美!