首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止屏幕闪烁(特例)

防止屏幕闪烁(特例)
EN

Stack Overflow用户
提问于 2017-06-02 09:45:34
回答 1查看 38关注 0票数 0

当图片(ActiveX)被点击时,我正在编写一个宏以在图片顶部添加一个形状:

代码语言:javascript
运行
复制
Private Sub clickpic_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)

ClickShape CLng(x), CLng(y)

End Sub
代码语言:javascript
运行
复制
Public addedShapes() As Shape
Public sIndex As Integer

Sub ClickShape(x As Long, y As Long)

Dim shp As Shape

Application.ScreenUpdating = False

Set shp = ActiveSheet.Shapes.AddShape(msoShapeMathMultiply, x + ActiveSheet.Shapes("clickpic").Left - 10, _
y + ActiveSheet.Shapes("clickpic").Top - 10, 20, 20)

With shp.Fill

    .ForeColor.RGB = RGB(255, 0, 0)
    .backColor.RGB = RGB(255, 0, 0)

End With

shp.Line.Visible = False

shp.Name = CStr(shp.Top & shp.Left)

ReDim Preserve addedShapes(sIndex)
sIndex = sIndex + 1

Set addedShapes(UBound(addedShapes)) = shp

ActiveSheet.Shapes("clickpic").Visible = False
ActiveSheet.Shapes("clickpic").Visible = True

Application.ScreenUpdating = True

End Sub

我发现the only way to display the shape immediately是启用和禁用图片的:

代码语言:javascript
运行
复制
ActiveSheet.Shapes("clickpic").Visible = False
ActiveSheet.Shapes("clickpic").Visible = True

然而,尽管关闭了屏幕更新,这仍然会导致屏幕刷新/闪烁。知道我怎么能阻止这件事吗?

EN

回答 1

Stack Overflow用户

发布于 2017-06-02 13:21:47

读取某个可见= True/False可能触发重新计算工作表的位置,这可能会导致闪烁。在您的代码中尝试将计算设置为手动是值得的。

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

https://stackoverflow.com/questions/44325795

复制
相关文章

相似问题

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