VBA Excel函数不会持续运行
所以我有一个在Excel中的函数,基本上加起来有多less黄色单元格的行。
Function CountColorIf(rArea As Range) As Long Dim rAreaCell As Range Dim lCounter As Long For Each rAreaCell In rArea If rAreaCell.Interior.ColorIndex = 6 Then lCounter = lCounter + 1 End If Next rAreaCell CountColorIf = lCounter End Function
代码的作品,但不是立即…因此,例如说,我使两个单元格黄色,然后我必须单击回到放置此function的单元格,然后按Enter键以显示正确的数字。
任何人都可以告诉我如何使它在任何时候工作表被改变时运行?
我发现有关Worksheet.event的东西(对不起,类似的东西),但从我的理解,只适用于一个子而不是一个函数。
任何帮助将是真正的appartiated!
干杯
山姆
您可以将您的function标记为“ Volatile
以便每次发生更改时都重新定位。 这可能是CPU密集型,尽pipe因为即使input一个数字也会导致它运行。
Application.Volatile (True)
编辑:这不会为你工作
原因:worksheet_change事件不是通过更改单元格的内部颜色来触发的。 我对这个虚假的希望感到抱歉。 我将留下答案,以解除您对工作表变更事件的疑虑,但不适用于您的情况。
除了Application.Volatile将是Worksheet_Change事件。 只要工作表中有变化,它就会启动。 如果电子表格很大,我会把一些东西关掉。
为了工作,它需要粘贴在你的工作表的代码(而不是一个模块)。
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rng as Range Application.enableevents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual If Not Intersect(Target, Sheet1.Cells) Is Nothing Then set rng = ActiveCell.Entirerow msgbox "There are " & CountColorIf(rng) & " yellow cells in this row!" End If Application.ScreenUpdating = True Application.enableevents = True Application.Calculation = xlCalculationAutomatic End Sub