Excel VBA:更新用户表单位置/大小会留下痕迹

时间:2017-01-16 23:42:33

标签: excel vba excel-vba

我对userforms非常熟悉,所以我决定尝试一下,尝试使用户形成增长/缩小并重新定位以根据复选框更改事件对齐中心。

代码按预期工作,但有一个问题。缩小userform时,userform会留下循环期间设置的所有大小增量的轨迹。这使程序看起来不那么顺畅"。我已经提供了该问题的屏幕截图以及相关代码。

我尝试过包含DoEventsApplication.ScreenUpdating的变体。 ScreenUpdating似乎什么都不做,而DoEvents将路径的数量减半,但也使得用户形式中的文本在执行期间变得有点疯狂。

注意:该复选框名为" MyCheckBox"并且userform命名为" ColumnSelect"

也许我试图用excels记忆或w / e来做太多。但是,任何帮助都会受到赞赏。谢谢!

Private Sub MyCheckBox_Change()

Dim w As Integer

Application.ScreenUpdating = False

If MyCheckBox.Value = True Then
    For w = 425 To 838 Step 7
        ColumnSelect.Width = ColumnSelect.Width + 7
        ColumnSelect.Left = ColumnSelect.Left - 3.5
    Next w
Else
    'DoEvents
    For w = 838 To 425 Step -7
        ColumnSelect.Width = ColumnSelect.Width - 7
        ColumnSelect.Left = ColumnSelect.Left + 3.5
    Next w
End If
Application.ScreenUpdating = True
End Sub

enter image description here

1 个答案:

答案 0 :(得分:1)

我测试了我家(游戏)上的文件,这比我提出问题时使用的笔记本电脑/显示器设置要强大得多。在调整用户表单大小时没有明显的痕迹,因此用户A.S.H似乎是正确的,他认为问题涉及PC /监视器而不是代码。

如果您希望得到答案,我将很乐意为您提供,只需提交您自己的答案。否则我会把它标记为answerws。谢谢你的帮助