如何从文本框捕获时间并将其粘贴到Excel工作表中

时间:2017-04-30 00:20:52

标签: excel vba login

使用带有宏的Excel的员工登录系统。 员工将输入员工ID,然后在txtName中显示其姓名。如果他们点击登录按钮,我希望能够捕获登录时间并将其粘贴到Excel工作表中,然后在他们注销时反之亦然。

屏幕截图为Screenshot

logout的第二个屏幕截图: Logout_issue

到目前为止,这是代码:

Dim CM As Boolean

Private Sub txtEmpID_Change()

Dim mySheet As Worksheet
Dim myRange As Range

Set mySheet = Sheets("Emp_ID")
Set myRange = mySheet.Range("B:B").Find(txtEmpID.Value, , , xlWhole)

If Not myRange Is Nothing Then
txtName.Value = myRange.Offset(0, -1)
Else
txtName.Value = "Match not found"
End If

End Sub

Private Sub UserForm_activate()

Do
If CM = True Then Exit Sub
txtTime = Format(Now, "hh:mm:ss")
DoEvents
Loop

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

CM = True

End Sub

1 个答案:

答案 0 :(得分:1)

首先,我建议您对控件使用userform名称以避免可能的错误。其次,您可以使用do loop而不使用if,如下所示:

Do While CM = False
UserForm1.txtTime = Format(Now, "hh:mm:ss")
DoEvents
Loop

至于您的问题,以下是将值从文本框传递到工作表中最后一个空单元格的方法:

Private Sub CommandButton1_Click()
With Worksheets("Emp_ID").Range("A65536").End(xlUp)
    .Offset(1, 0) = UserForm1.txtName.Value
    .Offset(1, 1) = UserForm1.txtEmpID.Value
    .Offset(1, 2) = UserForm1.txtTime.Value
End With
Unload Me 'Optional: Close Userform1
End Sub

当你说时我没有关注你,然后当他们退出时反之亦然“但如果你想记录注销时间,你也可以使用注销按钮(CommandButton2)做同样的事情):

Private Sub CommandButton2_Click()
Worksheets("Emp_ID").Range("D65536").End(xlUp).Offset(1) = Format(Now, "hh:mm:ss")
Unload Me 'Optional: Close Userform On Where Logout Button Is
End Sub

请记住,为了能够将文本框值传递给工作表单元格,应该打开userform。除非在关闭之前将它们传递给全局变量,否则无法从关闭的用户窗体传递值。