繁体   English   中英

Excel VBA:如何将代码执行限制到工作表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM