热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ExcelVBA如何检测工作表中是否粘贴了某些内容

如何解决《ExcelVBA如何检测工作表中是否粘贴了某些内容》经验,为你挑选了1个好方法。

我首先要说的是,我对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的回答也会有效.


推荐阅读
author-avatar
纠结大王烨要人陪往_763
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有