[英]Excel VBA: how can I restrict code execution to the sheet
我在工作表sheet1的单元格中有一个函数调用的工作表。 当我更改为sheet2时,进行一些编辑并返回至sheet1,我看到了值的更改(因为我使用了ActiveWorkbook和ActiveSheet)。 如果我在sheet1中执行某项操作,则值会返回。
我也可以有多个具有相同数据的工作簿...
编辑:我忘记指定工作簿和工作表的名称不是静态的,而是动态的。
编辑2:我认为在编辑工作表并执行VBA代码时,Excel会刷新所有工作表,但活动工作表不是其中数据所在的工作表Sheet1 ...因此,VBA代码在错误的工作表中运行。
编辑3:工作表的“计算选项”为“自动”,并且我的Excel页面底部的按钮“计算”强制刷新所有公式和VBA代码。
Excel单元格内容:
=IF(BD66;MainFunction(BJ66);"")
主功能:
Function MainFunction(var)
MainFunction = (var * Test()) / (...)
End Function
子功能用于多个功能:
Private Function Test()
Test = ActiveWorkbook.ActiveSheet.Range("BE50")
End Function
如何仅在活动工作表上而不在所有工作表上执行代码?
或最好的方法是什么?
谢谢你的帮助。
从我所看到的-您的Test函数总是通过查看活动表而不是包含=IF(BD66;MainFunction(BJ66);"")
公式的表来引起问题。
要查看此工作表,您需要查看使用Application.Caller
调用该函数的单元格:
Public Function MainFunction(Target As Range) As Double
MainFunction = Target * Test(Application.Caller)
End Function
Private Function Test(Target As Range) As Double
Test = Target.Parent.Range("BE50")
End Function
我已经将var
更新为Target
因为这是我在工作表事件中经常看到的内容。
我已经找到解决问题的方法...在主函数中添加参数以替换所有使用“活动...”的子函数
我的公式不太容易构建,但是可以在包含公式的工作表中使用...
谢谢你的帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.