Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:设置带行高循环的范围可见性的动画_Vba_Excel - Fatal编程技术网

Excel VBA:设置带行高循环的范围可见性的动画

Excel VBA:设置带行高循环的范围可见性的动画,vba,excel,Vba,Excel,我对在工作簿上显示/隐藏几个范围感兴趣。通常,我只需测试该范围是否已隐藏,并将以下值设置为true或falserng.EntireRow.hidden 我想让我的项目感觉更像一个应用程序(是的,我知道excel可能不是最好的地方,但关注像这样的小细节是我的事情)。下面是我正在尝试做的一个例子。它很有效,尤其是在干净的工作表/工作簿上。问题是,在我尝试使用它的工作簿上,工作表上已经有大量的数据/格式/形状。这会导致循环的平滑度出现“跳跃”。我尝试过不同的分步法,但似乎没有什么能真正解决这个问题。要

我对在工作簿上显示/隐藏几个范围感兴趣。通常,我只需测试该范围是否已隐藏,并将以下值设置为true或false
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。实际上,它似乎以最小的幅度平滑了过渡,因此这是朝着正确方向迈出的一步。将尝试更多地使用它来确认/改进结果。谢谢