Excel VBA:设置带行高循环的范围可见性的动画
我对在工作簿上显示/隐藏几个范围感兴趣。通常,我只需测试该范围是否已隐藏,并将以下值设置为true或falseExcel VBA:设置带行高循环的范围可见性的动画,vba,excel,Vba,Excel,我对在工作簿上显示/隐藏几个范围感兴趣。通常,我只需测试该范围是否已隐藏,并将以下值设置为true或falserng.EntireRow.hidden 我想让我的项目感觉更像一个应用程序(是的,我知道excel可能不是最好的地方,但关注像这样的小细节是我的事情)。下面是我正在尝试做的一个例子。它很有效,尤其是在干净的工作表/工作簿上。问题是,在我尝试使用它的工作簿上,工作表上已经有大量的数据/格式/形状。这会导致循环的平滑度出现“跳跃”。我尝试过不同的分步法,但似乎没有什么能真正解决这个问题。要
rng.EntireRow.hidden
我想让我的项目感觉更像一个应用程序(是的,我知道excel可能不是最好的地方,但关注像这样的小细节是我的事情)。下面是我正在尝试做的一个例子。它很有效,尤其是在干净的工作表/工作簿上。问题是,在我尝试使用它的工作簿上,工作表上已经有大量的数据/格式/形状。这会导致循环的平滑度出现“跳跃”。我尝试过不同的分步法,但似乎没有什么能真正解决这个问题。要查看任何动画,必须使用DoEvents
如果有人对如何使这项工作有想法,或者如果这是可能的话,那就太好了。谢谢
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中制作了很多动画(主要是图表动画)。我有时使用以下子项的变体:
Sub Pause(delay As Double)
Dim start As Double
start = Timer
Do While Timer < start + delay
DoEvents
Loop
End Sub
子暂停(延迟为双倍)
双倍起跳
开始=计时器
定时器<启动+延迟时执行
多芬特
环
端接头
然后在主代码中,在当前有
DoEvents
的位置之后(或代替)使用类似于Pause 0.10的内容。技术含量低,但有时会有所帮助。问题是,在我试图使用它的工作簿上,工作表上已经有大量数据/格式/形状。这会导致循环的平滑度出现“跳跃”。
究竟是什么导致了平滑度出现跳跃,请具体说明并提供示例<代码>我尝试了不同的分步法,但似乎没有解决问题。
具体来说,您尝试了什么,为什么不起作用?我尝试过的东西。。循环遍历范围中的每一行,通过一个因子修改高度(我尝试了多个因子)。这种方法通常会导致较慢的结果(也不太平滑)。我确实已经记下了我特别做的一些事情。。包括更改“逐步”。也许这在我的信息中丢失了。我用下面John提供的代码替换了代码中的DoEvents,它实际上似乎使动画更加平滑。我会进一步测试他的方法。谢谢你的回答,约翰。有意思。。我确实用您的循环替换了my DoEvents,同时按照建议通过了.1。实际上,它似乎以最小的幅度平滑了过渡,因此这是朝着正确方向迈出的一步。将尝试更多地使用它来确认/改进结果。谢谢