查找范围内的 select 值
Find and select value in range
我希望这个问题很容易回答。我有一个 userform
和一个 textbox
和 command button
用作密码输入。
我想知道的是,我可以将下面的宏 wrap/edit
转换成一个 if
语句来检查输入到 textbox1
中的值是否在范围内吗?如果列表中的值 IS 则 运行 下面的宏,如果 NOT 则 return 错误消息。这将 运行 关闭提交 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
这可能接近您的需求。当用户窗体初始化时,提交按钮被禁用。当用户开始输入 his/her 密码时,您检查输入的内容是否已在名为 "Passwords" 的工作表中注册。如果输入的字符在列表中,则启用提交按钮。提交按钮将 运行 您的代码。
版本:我添加了 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
我希望这个问题很容易回答。我有一个 userform
和一个 textbox
和 command button
用作密码输入。
我想知道的是,我可以将下面的宏 wrap/edit
转换成一个 if
语句来检查输入到 textbox1
中的值是否在范围内吗?如果列表中的值 IS 则 运行 下面的宏,如果 NOT 则 return 错误消息。这将 运行 关闭提交 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
这可能接近您的需求。当用户窗体初始化时,提交按钮被禁用。当用户开始输入 his/her 密码时,您检查输入的内容是否已在名为 "Passwords" 的工作表中注册。如果输入的字符在列表中,则启用提交按钮。提交按钮将 运行 您的代码。
版本:我添加了 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