当您按 VBA 项目和工作表时,具有相互复制的 VBA 项目和工作表的工作簿显示错误的单元格值"Calculate Now"



我有一个模板工作簿,由相互复制的相同工作表组成。我在VBA工程中有大约10个函数,我在每个工作表上都使用这些函数。然后,我将模板保存为启用宏的工作簿并填写它。我已经做了两次了,所以我现在有两个工作簿,比如工作簿a.xlsm和工作簿B.xlsm,它们直接来自该模板。每个工作表都有很多分组列,即可以通过在屏幕左侧顶部切换+或-号来隐藏的列。我已将计算模式设置为手动。我使用的是Excel2007。

我的一个函数叫做SUM_TOTAL(下面给出),它取2个范围和一个字符串,如果字符串在第一个范围内,则将第二个范围的项相加。

我在计算过程中遇到了问题,如果我在自动计算中使用它,或者如果我按下"立即计算",那么活动表将计算正常,但许多其他相同的表将给出与给定函数SUM_TOTAL的活动表相同的值。有些有效,有些无效,我认为这与并非每次都计算所有单元格有关。这向我表明,这些床单并不是完全独立的,但我看不出它们有任何联系。

我写了一个宏,它在工作表中循环并执行"计算工作表",但我认为这就是"立即计算"的作用?我想了解它,因为其他人最终会使用这个模型,我需要知道它是稳健的。

如有任何帮助,我们将不胜感激!

非常感谢,S

Public Function SUM_TOTAL(amount_type As String, amount_type_column As Range, 
range_to_sum As  Range) As Single
Dim cell As Range
SUM_TOTAL = 0
For Each cell In amount_type_column
If cell.Value = amount_type Then
SUM_TOTAL = SUM_TOTAL + Cells(cell.Row, range_to_sum.Column).Value
End If
Next cell
End Function

如果您希望UDF函数每次更新,即使输入参数(amount_type、amount_type_column、range_to_sum)没有更改。

  1. 您可以按Ctrl+Alt+f9以完全重新计算所有函数,或者在vba中Application.CalculateFull或更强大的Crtl+Shift+Alt+F9/Application.CalculateFullRebuild

  2. (请谨慎使用,这会使您的函数在工作表发生更改时重新计算)您应该通过添加CCD_ 3在任何一条线中的CCD_

最新更新