我有一张表格,其中包含以下信息“B”Emp。名称,“C”位置,位置“D”,工资“E”,我想在其中创建查找cmd按钮和其他cmd按钮以更新信息。因此我使用以下代码进行查找并且它工作得非常好,但更新推荐工作错误,当我搜索特定信息时,它显示所需信息但是当在表单中进行更改并按更新时,它会更改第一行表不是搜索行。所以请你帮忙。
Private Sub Search_Click()
Dim FindRow
Dim cRow As String
On Error Resume Next
cRow = Me.txtSearch.Value
'find the name of the employee written on the search box in column B
Set FindRow = Sheets("Sheet1").Range("B:B").Find(what:=cRow, LookIn:=xlValues)
'add the values to the userform
Me.txtname.Value = FindRow
Me.txtposition.Value = FindRow.Offset(0, 1)
Me.txtlocation.Value = FindRow.Offset(0, 2)
Me.txtbasicsalary.Value = FindRow.Offset(0, 3)
End Sub
Sub UpdateInfo_Click()
Dim FindRow
Dim fname As String
Dim lname As String
FindRow = 2
fname = txtname.Text
Cells(FindRow, 2).Value = fname
lname = txtposition.Text
Cells(FindRow, 3).Value = lname
End Sub
答案 0 :(得分:0)
首先,您需要Dim FindRow As Range
在按钮的子区域之外,但在User_Form
模块级别,因此user_form中的所有Sub
都将读取并修改相同的变量。
其次,您需要确保Find
成功通过If Not FindRow Is Nothing Then
检索“Sheet1”中的匹配。
第三,在您的UpdateInfo_Click
子资源中,确保之前已经Search_Click
运行,FindRow
能够在B列中找到匹配项,然后您可以使用{修改值} {1}}。
最后,继续在FindRow.Row
之前使用Sheets("Sheet1")
来完全限定它,就像在Cells
中一样。
<强>代码强>
Set FindRow = Sheets("Sheet1").Range("B:B").Find(what:=cRow, LookIn:=xlValues)
如何标记为“ANSWER”,请参见下图: