如何使用find功能搜索文本框的值?

时间:2017-06-22 07:22:59

标签: excel vba excel-vba

我正在尝试创建一个可以使用ID号显示数据的用户表单。

我正在尝试引用一个文本框并选择它,然后使用它作为参考来填写表格中的时间和注释。我认为我不能放" txtID.Value"进入查找功能。

以下是我的代码示例:

Sheet1.Select
Columns("A:A").Select
Selection.Find(What:="txtID.Value", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Select

ActiveCell.Offset(0, 8).Value = txtTime2
ActiveCell.Offset(0, 9).Value = txtComment2

2 个答案:

答案 0 :(得分:1)

使用Find函数时,建议使用Range对象,并将其设置为结果。通过此方法,您可以捕获Find无法在搜索范围Sheet1.Columns("A:A")中找到匹配项的可能方案。

另外,请尽量避免使用SelectSelectionActiveCell,并使用完全限定的Range对象(如下面的代码所示)。

<强>代码

Dim FndRng As Range

Set FndRng = Sheet1.Columns("A:A").Find(What:=txtID.Value, LookIn:=xlFormulas, LookAt:=xlPart, _
                SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

If Not FndRng Is Nothing Then ' successful find
    FndRng.Offset(, 8).Value = txtTime2
    FndRng.Offset(, 9).Value = txtComment2
Else ' unable to fins the value in txtID
    MsgBox "Unable to find " & txtID.Value & " in Sheet1"
End If

注意:如果您的代码超出了User_Form模块,则在尝试获取User_Form时需要添加txtID.Value引用。< / p>

对于eaxmple,我们假设您的表单名称为UserForm1,然后将此行更改为:

Set FndRng = Sheet1.Columns("A:A").Find(What:=UserForm1.txtID.Value, LookIn:=xlFormulas, LookAt:=xlPart, _
                    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

答案 1 :(得分:0)

要使其正常工作,您必须将代码放在下面,这是非常自我解释的。

Selection.Find(What:=Userform1.textbox1.value, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Select

希望这会有所帮助