如何限制Worksheet_Calculate()仅在计算指定范围时执行
问题描述:
所以这是一个普遍问题,我确定之前已经询问过这个问题,但我无法找到很多帮助。如何限制Worksheet_Calculate()仅在计算指定范围时执行
在具有一个工作表范围的Excel说B6:F12是我有在Worksheet_Calculate()子程序有问题的计算结果全部
我的问题是,随着对worksheet_calculate这种非常通用代码子程序
Private Sub Worksheet_Calculate()
Dim aCell as Range
Dim aRange as Range
Set aRange = Range(B6:B12)
For Each aCell in aRange
SomeFunction(aCell)
Next
End Sub
这种情况发生在范围C6任何计算:F12通过人气指数发生和不必要的调用SomeFunction(aCell)导致迭代。
如何才能使此场景只发生在范围B6:B12上执行计算?
答
您启动FOR
循环之前补充一点:
If Not Application.Intersect(ActiveCell, aRange) Is Nothing Then
这只会触发FOR
循环,如果你是在给定范围内
编辑
我的代码设置如下图所示它似乎为我工作:
Private Sub Worksheet_Calculate()
Dim oWS As Worksheet: Set oWS = ThisWorkbook.Worksheets("Sheet8")
Dim aRange As Range: Set aRange = oWS.Range("F6:F10")
If ActiveSheet.Name = oWS.Name Then
If Not Application.Intersect(ActiveCell, aRange) Is Nothing Then
MsgBox "In range"
End If
End If
End Sub
你可能有更具体一点。也许从您的数据中显示样本。何时进行计算?在你的代码中你有'B6:B12',但在你的问题中你有'C6:F12'和'B6:F12'。 – ShanayL
您是否只在范围'B6:B12'中有值时才运行该函数?如果它是你正在尝试的,使用'如果aCell “”然后'或[在单元格或范围更改](https://*.com/questions/409434/automatically-execute-an-excel-macro-on单元格更改) – danieltakeshi
单独的计算在所有单元格B6:F12中执行,因此是35个不同的计算。当B6:B12中的计算发生时,我需要调用SomeFunction()。由于它随时都会调用工作表上任何位置的计算,因此SomeFunction()会通过迭代调用。 – Chris