2016-04-01 168 views
0

我有用于扫描文件条形码的电子表格。我已经让宏返回文件扫描进入或离开的日期,但也希望避免快速连续扫描条形码一次。条形码扫描的VBA Excel代码返回扫描时间

这是我的代码:

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Intersect(Target, Range("A2:A3000")) Is Nothing Then Exit Sub 
    If Target.Count > 1 Then Exit Sub 
    If Target = "" Then Exit Sub 

    Dim lc As Long 
    With Application 
     .EnableEvents = False 
     .ScreenUpdating = False 
     lc = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 

     If lc = 1 Then 
     Cells(Target.Row, lc + 2) = Format(Now, "m/d/yyyy h:mm") 
     ElseIf lc > 2 Then 
     Cells(Target.Row, lc + 1) = Format(Now, "m/d/yyyy h:mm")   
     End If 

     .EnableEvents = True 
     .ScreenUpdating = True 
    End With 

End Sub 

我需要帮助把一个计时器返回当文件在60秒例如空格多次扫描一个MsgBox。谢谢

回答

0

你可以使用一个公共变量来存储最后一次扫描时间+ 1分钟,如果当前时间少于那个时间,那么只要过早退出子程序,如果它再次运行代码并更新时间

Public NextScan as Double 

Public Sub Test 
    If NOT NextScan < DateTime.Now Then Exit Sub 

    'YOUR CODE 

    NextScan = DateTime.Now + DateTime.TimeSerial(0, 1, 0) 
End Sub 
+0

感谢您的回复@保罗。我试图将代码添加到我的当前代码,但它似乎不工作。我应该在哪里添加代码或调整代码以使其工作? – WernerAvie

+0

sry我不能早日回复我不在,如果你把第一行'If NOT Nextscan ......'放在你的子文件的顶部,而另一行'NextScan = .....'右边然后在底部,然后将'Public NextScan ......'放在代码模块的顶部,而不是在子模块或函数中。 –

+0

您可能需要一些代码来处理表单上的输入,也许会添加一些内容以擦除扫描程序放置在其中的数据,直到其显示正确的时间。 –