Excel VBA:使用RowHeight循环animation范围的可见性

我有兴趣在我的工作簿上显示/隐藏几个范围。 通常我只是testing范围是否已经隐藏,并将以下设置为true或false rng.EntireRow.Hidden

我想让我的项目更像一个应用程序(是的,我知道excel可能不是最好的地方,但注意像这样的小细节是我的一种)。 以下是我正在尝试做的一个例子。 它工作,特别是在一个干净的工作表/工作簿。 问题是,在我尝试使用它的工作簿中,工作表上已经有了大量的数据/格式/形状。 这会导致循环的平滑性“跳跃”。 我已经尝试了不同的步骤,但似乎并没有真正解决它。 DoEvents是必要的,以便看到任何animation。

如果任何人有关于如何做这项工作的想法,或者如果可能的话,那将是很棒的。 谢谢!

 Sub testView() Dim rng As Range Dim i As Integer With ActiveSheet Set rng = .Range(.Cells(1, 1), .Cells(20, 1)) If rng.EntireRow.Hidden = True Then For i = 1 To 15 Step 1 rng.EntireRow.RowHeight = i DoEvents Next i Else For i = 14 To 0 Step -1 rng.EntireRow.RowHeight = i DoEvents Next i End If End With End Sub 

为了教学原因,我在Excel中做了很多animation(主要是图表的animation)。 我有时使用以下子的变体:

 Sub Pause(delay As Double) Dim start As Double start = Timer Do While Timer < start + delay DoEvents Loop End Sub 

然后在主代码中,在当前有DoEvents地方(或者代替) Pause 0.10 。 低科技,但有时帮助。