对不起,如果重复,但在互联网上找不到任何关于我的问题。
所以我有:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
然后在脚本的某处有
For Each sheet In sheets
If sheet.Cells(i, ColBrand).Rows.Hidden Then
sheet.Cells(i, ColBrand).EntireRow.Hidden = False
End If
Next
,其中ColBrand只是一个在开头定义为常量的列号。
所以它会通过一系列隐藏行的工作表来完成其工作。
问题是,尽管有Calcumanual,但偶尔会在状态栏中弹出“计算:xx%”。除了执行速度之外,这导致我认为Excel在隐藏每一行后重新计算整个工作表(可能是工作簿)。这很难过。
有什么想法吗?
谢谢!
现在我在想,是不是因为我在其中一个工作表上编写了几个VBA编写的Application.Volatile函数?
我确实有这个函数,它在一个条件下调用,触发WorkSheet_change事件。如果这有任何帮助
Function get_rand(floor As Long, ceiling As Long, exceptions() As Long)
Dim rand As Long, _
position As Variant
If UBound(exceptions) - LBound(exceptions) + 1 >= 999999 Then
get_rand = "error"
Else
Do Until IsError(position)
rand = CLng(((ceiling - floor + 1) * Rnd() + floor))
position = Application.Match(rand, exceptions, False)
get_rand = rand
Loop
End If
End Function
哦,顺便说一句,上面的代码与具有WorkSheet_Change例程的工作表交互。 Target.Adress的这些部分相交,但上面的代码既没有改变也没有更新。这可能是原因吗?
答案 0 :(得分:0)
这MS Document讨论了这个问题。
它声明"用户可以通过多种方式触发Microsoft Excel中的重新计算,例如:" ..."删除或插入行或列。"
我认为你偶然发现了一个记录在案的"功能"。