首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环VBA中的Shapes.Visible正误

循环VBA中的Shapes.Visible正误
EN

Stack Overflow用户
提问于 2017-10-27 14:40:57
回答 2查看 1.7K关注 0票数 0

我有一段代码,我想一个一个地展示和隐藏一些形状的物体,以便制作一个小动画。但是,当代码执行时,什么都不会发生,当代码停止运行时,所有的映像都会一次显示出来。

代码语言:javascript
复制
Sub test()

    For i = 1 To 4

        Sheets("Game").Shapes("North" & i).Visible = True

        Sleep 500

        'Sheets("Game").Shapes("North" & i).Visible = False
        'by setting it to false i'd like to achieve the animation effect

        Debug.Print i

        DoEvents

    Next i

End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-27 15:19:45

DoEvents允许其他代码(例如Excel自己的代码)运行和处理诸如用户单击另一个工作表(调用任何Worksheet.ChangeWorkbook.WorksheetChange处理程序).或者只是重新粉刷一下。

通过每个循环调用一次DoEvents,Excel没有机会在可见性切换之间重新绘制:它已经忙于运行您的循环了。

因此,您需要打开可见性,让Excel重新绘制(DoEvents),为您的动画延迟睡眠(500 on似乎有点慢),然后关闭可见性,让Excel重新绘制,即再次调用DoEvents

如果Game工作表在ThisWorkbook中,那么我建议您给它一个CodeName --在Project中选择它,然后查看它的属性(F4),然后将它的(Name)改为GameSheet

这为您提供了一个全局范围对象变量,这样您就不需要每次迭代两次取消对同一个工作表的引用--您甚至可以只取消引用它的Shapes集合一次:

代码语言:javascript
复制
Private Const ANIMATION_DELAY As Long = 100

Sub test()

    With GameSheet.Shapes

        For i = 1 To 4

            Dim currentShape As Shape
            Set currentShape = .Item("North" & i)

            currentShape.Visible = True
            DoEvents

            Sleep ANIMATION_DELAY

            currentShape.Visible = False
            DoEvents

            Debug.Print i

        Next 

    End With

End Sub
票数 3
EN

Stack Overflow用户

发布于 2017-10-27 15:17:11

在切换DoEventsTrue之后,通过设置TrueFalse修改了代码,现在它起作用了:

代码语言:javascript
复制
Sub test()

    For i = 1 To 4

        Sheets("Game").Shapes("North" & i).Visible = True

        DoEvents

        Sleep 100

        Sheets("Game").Shapes("North" & i).Visible = False

        DoEvents

        'by setting it to false i'd like to achieve the animation effect

        Debug.Print i



    Next i

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46977676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档