查找并选择范围

时间:2016-08-18 13:42:37

标签: excel-vba if-statement find excel-2013 vba

我希望这很容易回答。我有一个userformtextboxcommand button用作密码条目。

我想知道的是,我可以wrap/edit将下面的宏转换为if语句,检查输入textbox1的值是否在范围内?如果列表中的值 IS ,则运行以下宏,如果 NOT ,则返回错误消息。这将取消提交command button

Dim FindString As String
Dim Rng As Range
FindString = Password.TextBox1.Value
If Trim(FindString) <> "" Then
    With Sheets("CC Number").Range("A:A")
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            Application.Goto Rng, True
        Else
        End If
    End With
End If

1 个答案:

答案 0 :(得分:1)

这可能接近您的需求。 UserForm初始化时,禁用提交按钮。当用户开始输入他/她的密码时,您可以检查输入的内容是否已在名为&#34;密码&#34;的工作表中注册。如果输入的字符在列表中,则启用提交按钮。提交按钮将运行您的代码。 :我添加了else语句,用于禁用提交按钮(以及我在第一个回答中忘记的关键Exit Sub)。而且,为了好玩,您可以在输入文本框旁边添加一个标签(Label1),以便用户在键入时了解最新情况......

Private Sub UserForm_Initialize()
CommandButton1.Enabled = False
End Sub

Private Sub TextBox1_Change()
Dim sPW As String
Dim lLastRowPasswords As Long
Dim i As Integer

lLastRowPasswords = Worksheets("Passwords").Cells(Rows.Count, 1).End(xlUp).Row
sPW = TextBox1.Text

For i = 1 To lLastRowPasswords
    If Worksheets("Passwords").Cells(i, 1).Value = sPW Then
        CommandButton1.Enabled = True
        Label1.Caption = "Got it!"
        Label1.Font.Bold = True
        Label1.ForeColor = RGB(0, 102, 0)
        Exit Sub
    Else
        CommandButton1.Enabled = False
        Label1.ForeColor = RGB(179, 0, 0)
        Label1.Font.Bold = True
        Label1.Caption = "Unregistered password"
    End If
Next i

End Sub