【问题标题】:Set ForeColor won't execute in Exit eventSet ForeColor 不会在 Exit 事件中执行
【发布时间】: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,我肯定会尝试过。哈哈——经验的价值。谢谢。

标签: excel vba events userform


【解决方案1】:

进行此更改并进行测试。这将是用户表单关闭时的事件。

Private Sub ScbWeek_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    MsgBox "userform closed!!"
End Sub

【讨论】:

  • 感谢您的建议。没有关闭表格的问题。目的是设置 ForeColor。
  • @Variatus,我的意思是这个活动不适合你想要做的事情。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多