选择ComboBox AfterUpdate Excel VBA

时间:2016-12-19 14:27:18

标签: excel vba combobox

我正在为UserForm编写一个脚本,用户可以通过该脚本进行注册以访问数据库。 UserForm有三个字段UsernamePasswordConfirm Password

我已经做到这一点,在用户选择用户名后,脚本通过现有用户名运行VLookUp以检查所选用户名是否已存在。如果是,则弹出MsgBox,建议选择其他用户名。在这种情况下,UserForm的所有三个字段都被清除。我想将光标定位在Username字段中,以便用户可以直接填写不同的用户名。但是,在清除所有字段后,password字段将被选中。我怎么解决这个问题?谢谢你的帮助。

这是我写的代码:

Private Sub usernameinput_AfterUpdate()

Dim username As String
username = usernameinput.Text

Dim temp As String
On Error Resume Next
temp = WorksheetFunction.VLookup(Me.usernameinput.Value, Range("Usernames"), 1, 0)

If username = temp Then
    MsgBox ("The username chosen already exists. Please chose a different username."), vbOKOnly + vbInformation, "Existing Username"
    Err.Clear
    temp = ""
    Me.usernameinput.Value = ""
    Me.passwordinput.Value = ""
    Me.passwordconfirm.Value = ""
    Me.usernameinput.SetFocus
    On Error GoTo 0
End If

End Sub

1 个答案:

答案 0 :(得分:1)

你可以这样做:

在UserForm代码窗格中

  • 声明一个userform范围的变量

    Dim reset As Boolean
    
  • 插入此子

    Private Sub HandleReset()
        If reset Then
            Me.usernameinput.SetFocus
            reset = False
        End If
    End Sub
    
  • 添加所有其他UserForm控件Enter事件处理程序以调用HandleReset(),如下所示:

    Private Sub passwordconfirm_Enter()
        HandleReset
    End Sub
    
    Private Sub passwordinput_Enter()
        HandleReset
    End Sub