gpt4 book ai didi

vba - CountIf不自动计算

转载 作者:行者123 更新时间:2023-12-02 22:39:13 25 4
gpt4 key购买 nike

我的 countif 函数如果没有自动计算 - 我是否遗漏了什么?

    Option Explicit

Function my3CountIfs(Rng1 As Range, Criteria1 As String, Rng2 As Range, Criteria2 As String, Rng3 As Range, Criteria3 As String) As Long

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

Select Case ws.Name
Case "Summary-Sheet", "Notes", "Results", "Instructions", "Template"
' do nothing

Case Else
my3CountIfs = my3CountIfs + Application.CountIfs(ws.Range(Rng1.Address), Criteria1, ws.Range(Rng2.Address), Criteria2)

End Select
Next ws

End Function

当我使用以下命令时,我必须手动单击它并按回车键才能显示更新的答案

=my3COUNTIFS(I49,"Yes",I7,"Yes",I1, "Active")

是的,我已将 Excel 设置为自动计算。

感谢您的帮助 - 今晚对此 Excel 工作表进行了演示,但发现它无法正常工作! - 哎呀!

最佳答案

正如 cyboashu 在评论中提到的,您需要将 Application.Volatile 放入函数中。但正如 Rik 提到的,这也可能导致性能问题。 This particular post其答案与您的问题相关。

只是您可以使用的选项的摘要:

Function xyz()
Application.Volatile 'or Application.Volatile = True in later versions
...
End Function

或者一些手动按键

  • F9 重新计算所有打开的工作簿中的所有工作表
  • Shift+ F9 重新计算事件工作表
  • Ctrl+Alt+ F9 重新计算所有打开的工作簿中的所有工作表(完全重新计算)
  • Shift + Ctrl+Alt+ F9 重建依赖树并进行完全重新计算

或者对我有用的一个选项(因为我只需要在每次运行特定宏时重新计算我的 UDF)是使用 SendKeys ,如下所示:

Sub xyz()
...
'Recalculates all formulas by simulating keypresses for {ctrl}{alt}{shift}{F9}
SendKeys "^%+{F9}"
...
End Sub

( Here's the MSDN page for SendKeys )

关于vba - CountIf不自动计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41765395/

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