作者:纠结大王烨要人陪往_763 | 来源:互联网 | 2023-05-28 02:46
我首先要说的是,我对Excel和VBA的经验仅限于我在学校看到的.我有编程经验,但在其他语言.
我有一个文件,我每周都会得到.此文件的结构始终相同:ID,名称,日期,1到4之间的值,不相关的数据.
此数据通过"全选"按钮(工作表的左上角,MS excel 2013中单元名称下方的小三角形)进行选择,然后复制到另一个默认文件中,该文件将重新显示数据以在不同的工作表中显示和过滤基于1-4值和日期.
我的问题:如何检测何时粘贴数据?我已经尝试过Worksheet.Change事件,但粘贴命令(CTRL + V)不会触发Change事件.另外,如何复制数据?它是逐行更新,逐个单元(哪个方向),......?我知道一旦我能够检测到复制命令,我就可以通过调试来轻松找到最后一个问题的答案,但你永远不知道是否有人知道答案.
还有另一种更简单(或更好)的方法吗?
如果需要,可以提供更多数据和信息.
谢谢您的帮助.
编辑:'......有/正在被复制?' 改变为粘贴,因为它应该是.
1> Nahbyr..:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim UndoList As String
'~~> Get the undo List to capture the last action performed by user
UndoList = Application.CommandBars("Standard").Controls("&Undo").List(1)
'~~> Check if the last action was not a paste nor an autofill
If Left(UndoList, 5) = "Paste" Then
'Do stuff
End If
End Sub
这样做了.对于那些需要类似的东西并且知道他们的名单大小的人来说@MaciejLos的回答也会有效.