【发布时间】:2021-06-02 16:17:37
【问题描述】:
我有一个带有两个滚动条的小型用户表单,用于更改单元格值。它们处于标签顺序中,我想显示它们何时具有焦点。因此,我在 Enter 上更改了它们的前景色,并在 Exit 上将其改回。一切正常,只是颜色没有变回来。它在 Enter 时更改,但在 Exit 时不更改。这是其中之一的代码。
Private Sub ScbWeek_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ScbWeek.ForeColor = vbWhite
End Sub
我在该行上放了一个断点来查看事件是否被触发。确实如此,当我在停止后继续代码时,颜色被正确更改。我添加了一个测试:-
Debug.Print "ScbWeek.ForeColor = vbWhite = "; ScbWeek.ForeColor = vbWhite
测试在运行时返回 True,但前景色将继续为黄色。白色是原始颜色,在 Enter 时更改为 vbYellow。另一个滚动条从黑色变为 vbRed 并拒绝以相同的方式返回到 vbBlack。我通过切换到下一个控件(向前和向后)并单击另一个控件来测试退出事件。
表单很小,只有 1 个文本框、2 个按钮、2 个滚动条和一些标签。这是一个相当大的项目的一部分。 ScreenUpdating 在显示此表单时不会被抑制,并且无论如何都会按上述方式显示更改。
我能做什么?
【问题讨论】:
-
试过
Me.Repaint? -
ByVal Cancel As MSForms.ReturnBoolean是关闭用户表单的内容。 -
@Tim Williams Bravo!那成功了。请将其发布为答案,以便我可以选择它。如果我在询问之前遇到过
Repaint,我肯定会尝试过。哈哈——经验的价值。谢谢。