访问表单拒绝将焦点从一个文本输入更改为另一个文本

问题描述 投票:0回答:2

我在Microsoft Access中拥有一个基本的登录表单,在该表单中,我必须清除所有文本框的VBA脚本不会将焦点从一个文本框更改为另一个文本框。您可能已假设的弹出窗口是运行时错误'2110'。即使经过多个调试步骤并确保已启用它们并使其可见,该脚本也无法按预期工作。

这是我的代码:

1 | Private Sub Form_load()
2 |     If Me.FirstInput.Visible = False Then
3 |         Me.FirstInput.Visible = True
4 |     End If
5 |     If Me.LastInput.Visible = False Then
6 |         Me.LastInput.Visible = True
7 |     End If
8 |     If Me.ErrorTxt.Visible = True Then
9 |         Me.ErrorTxt.Visible = False
10|     End If
11|     Me.FirstInput.SetFocus
12|     Me.FirstInput.Text = ""
13|     Me.LastInput.SetFocus
14|     Me.LastInput.Text = ""
15|     Me.FirstInput.SetFocus
16|     Me.LastInput.Visible = False
17| End Sub

错误是我在第13行将焦点更改为“ LastInput”的位置。如果有人可以给我一些指导,以解决该问题,或者您需要更多信息,请告诉我。

编辑:只是对于那些想知道我的“文本框”的“启用”或“锁定”属性设置不正确的人:Proof of enabled and locked

vba ms-access access-vba
2个回答
0
投票

检查控件的“已启用”属性。我敢打赌,它设置为False。


0
投票

[使用可见属性的方式,我想您想强制用户首先输入FirstName,并且如果没有合理的名字,我也想有一个AfterUpdate事件过程来隐藏LastInput文本框。输入...

[不幸的是,更改Text属性的值就像在文本框中键入值,这意味着将触发AfterUpdate事件,该事件将隐藏LastInput文本框,使其无法获得焦点。

我建议稍微更改一下代码,并使用Value属性(这是默认属性)来清空两个文本框:

Private Sub Form_Load()

    FirstInput.Visible = True
    LastInput.Visible = False
    ErrorTxt.Visible = False

    FirstInput = Null
    LastInput = Null

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.