如何自动更新使用特定 VBA 代码的 Excel 中的单元格?

亚历山大·威廉

我在 Excel 中有一个工作表,其中包含使用此 VBA 宏的单元格(使用两个参数,它计算所有工作表中 Arg#2 范围内 arg#1 的出现次数,并返回总数):

Public Function WBCountString(SearchFor As String, InRange As Range) As Long
Dim wbcs As Long, rng As Range, addr As String
For Each s In Worksheets
    addr = InRange.Address
    Set rng = s.Range(addr)

    wbcs = wbcs + Application.WorksheetFunction.CountIf(rng, SearchFor)
Next s
WBCountString = wbcs
End Function

该宏用作单元格中的函数,如下所示,它使用位于 A:A 中的单元格作为参数:

在此处输入图片说明

当我更改 A:A 单元格值时,使用脚本的单元格的值不会更改,我必须单击公式并按“Enter”才能更新值。

我尝试在“ThisWorkbook”中使用此功能,但收到“更改”消息框,但 F:F 中的单元格不会更新或更改值:

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
 ByVal Source As Range)
 ' runs when a sheet is changed
    MsgBox "Change."
    Application.Calculate
End Sub

我怎样才能使使用此宏的单元格在每次更新工作簿任何工作表上的任何单元格 A:A 时更新?

里卡多·迪亚兹

我重构了一些代码,使变量更容易理解

这里的关键是添加 Application.Volatile 以便在每次工作簿更改时重新计算它。

请注意,如果工作簿中的公式很重(这种方法会减慢您的工作簿计算速度)

代码:

Public Function WBCountString(SearchFor As String, InRange As Range) As Long
    Dim targetSheet As Worksheet
    Dim lookupRange As Range

    Dim counter As Long

    Dim lookupAddress As String

    For Each targetSheet In Worksheets
        lookupAddress = InRange.Address
        Set lookupRange = targetSheet.Range(lookupAddress)

        counter = counter + Application.WorksheetFunction.CountIf(lookupRange, SearchFor)

    Next targetSheet

    WBCountString = counter

    ' Recalculate with every change in workbook
    Application.Volatile

End Function

让我知道它是否有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel VBA:如何在VBA代码中重复双击/单元格编辑操作

如何使用VBA在Excel中自动更新格式

如何使用vba在excel中获取单元格名称

使用Excel VBA显示相邻单元格中单元格的值变化

在VBA Excel中连续隐藏特定单元格

Excel VBA 在特定单元格中添加值

Excel VBA代码如何向特定单元格添加文本

如何在excel VBA中验证单元格值

使用 VBA 在 Excel 单元格中运行 SQL 语句

使用VBA功能在Excel中修改单元格

使用vba比较excel中的2个单元格

使用VBA在Excel中累积单元格值

如何使用 VBA 代码根据单元格值隐藏 Excel 工作表

如何在Excel中将我的VBA代码应用于整个单元格

使用公式链接单元格填充汇总表的 Excel VBA 代码

确定多个单元格的Excel VBA代码范围

Excel VBA代码以选择非空单元格

用于覆盖excel中空白单元格的VBA代码

VBA代码可锁定Excel中仅用户选择的(突出显示的)单元格

Excel VBA计算代码无法计算合并单元格中的某些公式

Excel中的VBA代码以基于两个条件选择单元格

如何使用 Excel VBA 中的循环更新一系列单元格中的值

如何使用excel vba在单元格中添加“₹”(格式化带有货币符号“₹”的单元格)

如何使用VBA和Match函数更新Excel表中的单元格值?

在 Excel 中,如何使用 VBA 仅复制具有特定顺序的所需单元格

VBA Excel中的单元格范围

仅当相邻单元格不为空时,才在单元格中输入如何验证信息。Excel VBA

如何在Excel表单元格中更改值而不在VBA中指定单元格引用

Excel VBA - 使用单元格中的值作为地址来定位另一个单元格