Excel VBA - 记住上一个用户窗体文本框光标焦点



我在 Excel VBA 用户窗体上有 10 个文本框,当我离开窗口(例如,在不同的程序中执行其他工作(并返回时,我希望焦点放在我上次使用的文本框上。

我认为对于有经验的人来说,这应该是一个显而易见的问题,但我在任何地方都找不到关于这个话题的好问题。如果有人能指导我找到一个正确的答案,给我一个可搜索的主题,或者一段好的代码,那将是黄金。我是一块海绵,我会拿任何东西。

谢谢! -克里斯

光标焦点不是 VBA 中的事件,因此要做到这一点有点困难。但是您可以使用_Change事件并记住上次更改的Textbox,这与您想要的非常接近。

模块中需要一个公共变量,用于上次更改的文本框的名称。因此,下次激活表单时,您可以使用简单的select case并使用表单相应名称的.SetFocus。下面的代码适用于两个文本框。

在形式中:

Option Explicit
Private Sub TextBox1_Change()
strLastTb = "TextBox1"
End Sub
Private Sub TextBox2_Change()
strLastTb = "TextBox2"
End Sub
Private Sub UserForm_Activate()
Select Case strLastTb
Case "TextBox1"
TextBox1.SetFocus
Case "TextBox2"
TextBox2.SetFocus
End Select
End Sub

在模块中:

Option Explicit
Public strLastTb As String

通常,您可以创建一个连接TextBox&Digit的函数,因此如果您有 50TextBoxes,则不需要编写 100 行。而且看起来会更好。

最新更新