使用Excel VBA更新用户表单的按钮

使用Excel VBA更新用户表单的按钮,excel,vba,Excel,Vba,因此,我试图将“更新”按钮连接到包含员工编号、姓名和部门的excel表 它的功能是什么?用户需要输入员工的编号,然后它将显示姓名和员工的部门(我已经完成了),然后用户可以更改姓名和部门,并按下更新按钮,这就是问题所在 每次我按下更新按钮,它都会显示“编译错误:如果没有块if则结束” 当语句与If位于同一行时,后面不应出现End If。删除该行: For x = 2 To lastRow If ws.Cells(x, 3).Values = empNum Then Rows(x).Sele

因此,我试图将“更新”按钮连接到包含员工编号、姓名和部门的excel表

它的功能是什么?用户需要输入员工的编号,然后它将显示姓名和员工的部门(我已经完成了),然后用户可以更改姓名和部门,并按下更新按钮,这就是问题所在

每次我按下更新按钮,它都会显示“编译错误:如果没有块if则结束”


当语句与
If
位于同一行时,后面不应出现
End If
。删除该行:

For x = 2 To lastRow
    If ws.Cells(x, 3).Values = empNum Then Rows(x).Select
    End If ' <--------------------------------------------- Remove this line
Next

多亏了A.S.H,下面的代码现在可以工作了

Private Sub btn_Update_Click()
Dim lastRow As Integer
Dim empNum As Integer
Dim rowSelect As Integer
Dim x As Integer



If Trim(txt_EmpNo.Value) = vbNullString Then

MsgBox "The Employee's No cannot be blank!"

 Else

empNum = txt_EmpNo.Value
Sheets("LUNCH ORDER").Select



Set ws = Worksheets("LUNCH ORDER")
lastRow = ws.Cells(Rows.Count, 2).End(xlUp).Row



For x = 2 To lastRow
If ws.Cells(x, 2).Value = empNum Then Rows(x).Select

Next



rowSelect = ActiveCell.Row



Cells(rowSelect, 3) = Me.txt_Name.Value
Cells(rowSelect, 4) = Me.txt_Dept.Value




End If

End Sub

哦,我明白了,但是出现了另一个错误,它声明“运行时错误'438”:对象不支持此属性或方法“知道如何解决它吗?@JosephLim看到答案中添加的部分,您也有一个拼写错误
。值
@JosephLim可能是从未满足的条件?非常感谢!我成功了,我放错了专栏哈,请不要用解决方案覆盖你的问题-这会给我们留下两个答案,没有问题,这会让未来的读者感到困惑。谢谢如果你想展示你是如何解决这个问题的,例如,在现有答案的基础上,下面的自我回答是最受欢迎的。啊,好的,对不起,这是我第一次来这里。无论如何,我已经把我的答案放在下面了。
If ws.Cells(x, 3).Value = empNum Then Rows(x).Select
'                 ^^^^^^ not .Values
Private Sub btn_Update_Click()
Dim lastRow As Integer
Dim empNum As Integer
Dim rowSelect As Integer
Dim x As Integer



If Trim(txt_EmpNo.Value) = vbNullString Then

MsgBox "The Employee's No cannot be blank!"

 Else

empNum = txt_EmpNo.Value
Sheets("LUNCH ORDER").Select



Set ws = Worksheets("LUNCH ORDER")
lastRow = ws.Cells(Rows.Count, 2).End(xlUp).Row



For x = 2 To lastRow
If ws.Cells(x, 2).Value = empNum Then Rows(x).Select

Next



rowSelect = ActiveCell.Row



Cells(rowSelect, 3) = Me.txt_Name.Value
Cells(rowSelect, 4) = Me.txt_Dept.Value




End If

End Sub