gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:04:03 25 4
gpt4 key购买 nike

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

我的一个函数称为 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. (谨慎使用,这会使您的函数在工作表发生变化时重新计算)你应该让你的函数易变,通过添加Application.Volatile in SUM_TOTAL 函数在任何一行

关于vba - 当您按下 "Calculate Now"时,包含相互复制的 VBA 项目和工作表的工作簿显示错误的单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13703676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com