【问题标题】:How to capture the time from textbox and paste it in excel sheet如何从文本框中捕获时间并将其粘贴到 Excel 工作表中
【发布时间】:2017-04-30 00:20:51
【问题描述】:

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

截图如下:

注销的第二张截图:

到目前为止的代码如下:

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

【问题讨论】:

  • 您可以在CommandButton_Click 例程中发布代码,因为这是我们需要能够帮助您的部分。您可以简单地编辑这个问题,而不是开始一个新问题。

标签: excel vba login


【解决方案1】:

首先,我建议您为控件使用用户窗体名称以避免可能的错误。其次,你可以像这样使用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

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

【讨论】:

  • Tehscript 非常感谢您。我创建了一个新工作表并将他们的登录时间存储在那里。我现在唯一的问题是在注销期间。我不知道如何将注销时间与注销的人放在同一行。我正在考虑使用 .find(txtEmpID) 的代码,然后从那里使用偏移代码。我发布了另一个截图,请随时查看。
  • 我已经在我的解决方案中解释过了。在您的用户窗体中,创建另一个名为 CommandButton2(注销按钮)的按钮并使用上面的最后一个代码。它应该可以解决问题。
  • 我想我已经知道了。我使用了与 txtEmpID_Change() 中相同的代码。
  • Tehscript 我打算添加一个简短的装饰。因为当前登录的员工仍然可以登录。我希望有一个条件,即他们只能在当前登录时注销。但不管怎样,你真的帮了我很多。我非常感谢。
  • @Dylan Mecagami 我不知道您正在使用哪种用户界面,但您有很多选择。例如登录后,您可以关闭用于登录的用户表单并打开另一个用户表单,该用户表单上也有注销按钮,剩下的就在这里完成。或者如果您想使用相同的用户表单,您可以在登录后将按钮的可见性更改为 false。还有更多选项。我很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多