【问题标题】:How do I run an Excel macro for when a cell is changed but the data has not been entered yet?当单元格更改但尚未输入数据时,如何运行 Excel 宏?
【发布时间】:2013-06-03 12:46:08
【问题描述】:

问题出在这里:我有一台激光扫描仪,它可以读取条形码并在成功读取后反刍一个值。发生这种情况时,序列号(约 20 位数字)将粘贴到活动单元格中。 已粘贴,但未输入。我想知道是否有任何方法可以在私有子中包含某种“如果粘贴了数据”语句。

代码的第二个目的是为右侧列中的每个条目加上时间戳,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then        
    ActiveCell.Offset(0, 1).Activate
    ActiveCell.Value = Now()
    ActiveCell.Offset(1, -1).Activate
    End If

End Sub

数据不会快速输入,因此相对单元格引用应该不是问题。
如果您发现任何其他可以改进的地方,请不要犹豫提及!

编辑:因为有些人提出来了,所以这不是一个“简单”的粘贴;数据被放入公式栏中,但没有输入。

编辑 2:这是我的 same problem. 的另一个人

【问题讨论】:

  • 您不需要在写入之前激活单元格。 If-EndIf中的3行可以写成Target.Offset(0, 1).Value = Now
  • 另外,您不需要"If data pasted" statement.,当您将数据粘贴到单元格中时,上述Worksheet_Change 事件也会触发。
  • @SiddharthRout 问题是当输入数据时,数据的行为就像是被放入公式栏中而不按“Enter”,所以它不是“真正的”粘贴。跨度>
  • 你到底想达到什么目标?
  • @user2447846:你能把解决方案放在下面的答案中,特别是帮助你实现你想要的设置吗?谢谢。

标签: excel input paste vba


【解决方案1】:

条形码阅读器只是键盘的替代品,它可以输入从条形码读取的字母数字。问题是它没有输入回车键。您可能想检查是否有办法在条形码阅读器中激活此功能。此处示例:https://docs.symbol.com/KanisaPlatform/Publishing/444/ADC-01244_f.SAL_Public.html

不存在由 Excel 向 VBA 公开以拾取击键并最终在编辑栏中发生更改的事件。

根据此来源:http://www.excelforum.com/excel-programming-vba-macros/686972-key-press-event-in-he-formula-bar.html,您无法捕获在编辑栏中键入的字符的按键事件。同一来源描述了一种可能的方法,涉及通过 Win32 API 侵入监听到公式栏窗口的事件。那里没有什么令人兴奋的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-03
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2014-10-01
    相关资源
    最近更新 更多