我正在尝试创建一个可以使用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
答案 0 :(得分:1)
使用Find
函数时,建议使用Range
对象,并将其设置为结果。通过此方法,您可以捕获Find
无法在搜索范围Sheet1.Columns("A:A")
中找到匹配项的可能方案。
另外,请尽量避免使用Select
,Selection
和ActiveCell
,并使用完全限定的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
希望这会有所帮助