Excel 设置前景色赢得';无法在退出事件中执行

Excel 设置前景色赢得';无法在退出事件中执行,excel,vba,events,userform,Excel,Vba,Events,Userform,我有一个带有两个滚动条的小用户表单,用于更改单元格值。它们是按选项卡顺序排列的,我想显示它们何时具有焦点。因此,我在进入时改变了它们的前景色,在退出时又改变了它。除了颜色不变外,一切都很好。它在进入时更改,但在退出时不更改。这是其中一个的代码 Private Sub ScbWeek_Exit(ByVal Cancel As MSForms.ReturnBoolean) ScbWeek.ForeColor = vbWhite End Sub 我在行上放置了一个断点,以查看是否触发了事件。

我有一个带有两个滚动条的小用户表单,用于更改单元格值。它们是按选项卡顺序排列的,我想显示它们何时具有焦点。因此,我在进入时改变了它们的前景色,在退出时又改变了它。除了颜色不变外,一切都很好。它在进入时更改,但在退出时不更改。这是其中一个的代码

Private Sub ScbWeek_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    ScbWeek.ForeColor = vbWhite
End Sub
我在行上放置了一个断点,以查看是否触发了事件。确实如此,当我停止后继续执行代码时,颜色已正确更改。我添加了一个测试:-

Debug.Print "ScbWeek.ForeColor = vbWhite = "; ScbWeek.ForeColor = vbWhite
测试在运行时返回True,但前景色将继续为黄色。白色是输入时变为黄色的原始颜色。另一个滚动条从黑色变为vbRed,并以相同的方式拒绝返回vbBlack。我通过切换到下一个控件(向前和向后)并单击另一个控件来测试退出事件

表单很小,只有1个文本框、2个按钮、2个滚动条和一些标签。这是一个相当大的项目的一部分。屏幕更新不会在显示此表单时被抑制,并且,无论如何,更改会如上所述显示


我能做什么?

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

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

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

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

Me.Repaint
这将刷新表单的UI

你可以试试

Me.Repaint
这将刷新表单的UI


尝试了
Me.Repaint
ByVal Cancel作为MSForms.ReturnBoolean
是关闭用户表单的内容。@Tim Williams好极了!这就成功了。请将其作为答案发布,以便我可以选择它。如果我以前遇到过
Repaint
,我一定会在问之前尝试一下。哈哈-经验的价值。谢谢。尝试了
Me。重新绘制
ByVal Cancel作为MSForms。ReturnBoolean
是关闭用户表单的内容。@Tim Williams太棒了!这就成功了。请将其作为答案发布,以便我可以选择它。如果我以前遇到过
Repaint
,我一定会在问之前尝试一下。哈哈-经验的价值。谢谢,谢谢你的建议。不存在关闭表单的问题。我们的目的是设置前景色。@Variatus,我想说的是,这项活动不适合您的尝试。谢谢您的建议。不存在关闭表单的问题。我们的目的是设置前景色。@Variatus,我想说的是,这件事不适合你要做的事。