更新搜索信息

时间:2017-02-19 17:38:13

标签: excel-vba vba excel

我有一张表格,其中包含以下信息“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

1 个答案:

答案 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”,请参见下图:

enter image description here