是否有可能强制并保持在Excel上的VBA自动计算?



我正在向用户发送一个Excel工作簿,在那里我需要始终激活自动计算。

问题是我无法阻止用户在获得文件后进行手动计算。

我的想法是在用户每次点击工作簿的某个地方时进行自动计算。

我试图用VBA和workbook_activate宏来解决问题:

Private Sub Workbook_Activate()
Application.Calculation = xlAutomatic
End Sub

它曾经有效过,但现在似乎不再有效了。

你知道我能做什么来解决我的问题吗?

Foxfire的评论完全正确。这应该作为一个培训问题来处理,而不是技术上的改变。然而,尝试这两种方法来提高安全性并没有错。你甚至可以修改代码来检测用户何时关闭了自动呼叫,并警告他们这是违反最佳实践的。

这个想法是在每次用户单击工作簿中的某个地方时进行自动计算。但我不知道这是否可能…

你可以使用Worksheet_SelectionChange事件,它会给你确切的结果。然而,你必须把它放在每个工作表中。

一个稍微好一点的方法可能是只在发生更改时运行——毕竟,只有更改才需要重新调用。这可以在工作簿级别完成,如下所示:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.Calculation = xlCalculationAutomatic
End Sub

另一个版本-带有警告:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Application.Calculation <> xlCalculationAutomatic Then
Application.Calculation = xlCalculationAutomatic
MsgBox "Please do not disable automatic calculation blah blah blah.."
End If
End Sub

最新更新