Excel 检测并跟踪任何工作表中的(值)变化

2024-03-02

我已经设法编写了一个代码来检测任何工作表中特定单元格的值变化,但我一直在努力构建一些检测和跟踪范围(值)变化的代码。

例如,如果用户决定复制并粘贴某些范围的数据(假设超过 1 个单元格),宏将不会捕获它。用户选择一个范围,然后在仍选择范围的情况下手动将值输入到每个单元格中也是如此。

我当前的代码由 2 个宏构成,第一个宏在工作表选择发生更改时运行,并将 target.value 存储到先前的值变量中。第二个宏在工作表发生更改时运行,并测试目标值是否与前一个值不同,如果是,则通知用户已发生的更改。


好吧,我真的没有在这里看到任何涵盖整个事情的内容,所以这是一个粗略的尝试。

它将处理单单元或多单元更新(您可以设置一定的限制,超出该限制...)

它不会处理多区域(非连续)范围更新,但可以扩展以执行此操作。

您可能还应该添加一些错误处理。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Where As String, OldValue As Variant, NewValue As Variant
    Dim r As Long, c As Long

    Dim rngTrack As Range

    Application.EnableEvents = False
    Where = Target.Address
    NewValue = Target.Value
    Application.Undo
    OldValue = Target.Value 'get the previous values
    Target.Value = NewValue
    Application.EnableEvents = True

    Set rngTrack = Sheets("Tracking").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

    'multi-cell ranges are different from single-cell ranges
    If Target.Cells.CountLarge > 1 And Target.Cells.CountLarge < 1000 Then
        'multi-cell: treat as arrays
        For r = 1 To UBound(OldValue, 1)
        For c = 1 To UBound(OldValue, 2)
            If OldValue(r, c) <> NewValue(r, c) Then
                rngTrack.Resize(1, 3).Value = _
                  Array(Target.Cells(r, c).Address, OldValue(r, c), NewValue(r, c))
                Set rngTrack = rngTrack.Offset(1, 0)
            End If
        Next c
        Next r
    Else
        'single-cell: not an array
        If OldValue <> NewValue Then
            rngTrack.Resize(1, 3).Value = _
              Array(Target.Cells(r, c).Address, OldValue, NewValue)
            Set rngTrack = rngTrack.Offset(1, 0)
        End If
    End If

End Sub

获取先前值的“撤消”部分来自加里学生的回答:使用 VBA 如何检测工作表中的任何值何时发生变化? https://stackoverflow.com/questions/30513655/using-vba-how-do-i-detect-when-any-value-in-a-worksheet-changes?rq=1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel 检测并跟踪任何工作表中的(值)变化 的相关文章

  • xlwings: 删除一个列 | Excel 中的行

    如何删除 Excel 中的一行 wb xw Book Shipment xlsx wb sheets Page1 1 range 1 1 clear clear 用于删除内容 我想删除该行 我很惊讶 clear 函数有效 但 delete
  • 在 Excel 表格中选择多列的代码

    我是 Excel VBA 新手 我需要修改我的代码 以便我能够进一步进行 我想在 Excel 表格中选择多个表格列 这是我的代码 Dim ws As Worksheet Dim tbl As ListObject Set ws Sheets
  • 如何在VBA编辑器中跳转到行号?

    我在 Office 2010 中使用 VBA 在顶部 有一个带有行号和列号的框 例如 Ln 1480 Col 17 有没有办法在代码编辑中 而不是在执行中 直接跳转到另一个行号 就像我使用的那样Ctrl G在记事本中 这个MSDN答案 ht
  • 如何让VLOOKUP在VBA中选择到最低行?

    希望自动在单元格中插入 VLOOKUP 公式 录制宏时 我指示它使用相同的公式填充下面的列 效果很好 但是 当 VLOOKUP 搜索的表发生变化 更多或更少的行 时 就会出现问题 在记录时 VLOOKUP 下降到表中的最后一行 273 但是
  • VBA 中的多线程

    这里有人知道如何让VBA运行多线程吗 我正在使用 Excel 无法用 VBA 本地完成 VBA 构建在单线程单元中 获得多个线程的唯一方法是使用 VBA 之外的其他具有 COM 接口的东西构建 DLL 并从 VBA 调用它 信息 OLE 线
  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • Objective-C:在哪里定义宏以便随处可用?

    我有一个 iOS 应用程序 它在许多视图控制器中使用相同的字符串 数字等 所以我认为最好在一个文件中定义这些常量并在所有视图控制器实现中使用它 优点是更改一个数字 我只需要做一次 而不是在所有视图控制器中都使用该数字 实际上 我的 h 文件
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • VBA 完成 Internet 表单

    我正在寻找将 Excel 中的值放入网页的代码 Sub FillInternetForm Dim IE As Object Set IE CreateObject InternetExplorer Application IE naviga
  • VBA 中的匈牙利语好吗?

    我在 Net 中不使用匈牙利语 str int 前缀 但我仍然发现它在 VBA 中很有用 因为在 VBA 中很难看到类型 这很糟糕吗 不必要 也许我错过了一些东西 我真的很感激任何反馈 我想知道有一段时间了 谢谢大家 我想说 这种匈牙利符号
  • Excel 数字缩写格式

    这是我想要完成的任务 Value Display 1 1 11 11 111 111 1111 1 11k 11111 11 11k 111111 111 11k 1111111 1 11M 11111111 11 11M 11111111
  • 两个日期之间的小时数在 Excel 中不起作用

    根据要求 我提供了一张简化的屏幕截图来说明该问题 如您所见 我减去了两个日期并将其格式化为 h mm ss 为什么这不能提供两个日期之间经过的总小时数 有一个更好的方法吗 下面有一个很好的答案 但我试图弄清楚为什么按照此屏幕截图中所示的方式
  • 用于解析 Rust 中的匹配臂的递归宏

    我正在尝试编写一个宏来将一组规则扩展为执行标记匹配的代码 但无法在不导致宏扩展错误的情况下生成正确的代码 我知道我可以通过其他方式处理这个问题 但这里的关键问题不是如何解析令牌 而是如何编写一个可以使用匹配臂递归扩展令牌树的宏 这个想法是我
  • 获取当前 VBA 函数的名称

    对于错误处理代码 我想获取发生错误的当前 VBA 函数 或子函数 的名称 有谁知道如何做到这一点 编辑 谢谢大家 我曾希望存在一个未记录的技巧来自行确定函数 但这显然不存在 我想我会保留当前的代码 Option Compare Databa
  • SQL Excel VBA 运行时错误 3709 无效连接

    这是我的第一个问题 欢迎提出建设性的批评 我正在尝试从 Excel VBA 查询 Access 数据库并将返回信息放入 Excel 范围中 我收到此错误 错误消息 运行时错误 3709 连接无法用于 执行此操作 在此情况下它已关闭或无效 语
  • 在 Excel 中使用 VBA 设置图像透明度

    有没有办法使用 VBA 脚本对图像应用一些透明度 我录制了一个 宏 但似乎没有录制艺术效果 我已经找到了如何制作形状 但没有找到图像 这需要几个步骤 将自选图形 如矩形 放置在工作表上 使用以下方法将您的实际图片嵌入矩形中 ShapeRan
  • 如何在 Excel 中对“高”字符进行 HTML 编码或音译?

    在 Excel 中 如何将包含重音字符 大引号等的单元格内容转换为相同字符的 HTML 或音译纯文本版本 我们有一个 XLS 文档 其中包含一些 高 字符 数据已通过数据库连接提取 并且 Excel 似乎正确处理不同代码页中的各个单元格 或
  • 使用 split 函数到数组中会导致编译错误:无法分配给数组

    我正在尝试使用split 函数根据给定名称字符串中的空格拆分名称 当尝试编译我在下面编写的代码时 出现编译错误 无法分配给数组 我几乎从这里复制了微软的示例 https support microsoft com en us kb 2662
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 使用 XMLHTTP 进行抓取会在特定类名处引发错误

    我正在尝试使用此代码抓取网站以提取姓名和联系人 Sub Test Dim htmlDoc As Object Dim htmlDoc2 As Object Dim elem As Variant Dim tag As Variant Dim

随机推荐

  • 优化 Solr 的排序

    我正在使用 Solr 进行实时搜索索引 我的数据集大约有 60M 大文档 我需要按时间排序 而不是按相关性排序 目前 我在查询中使用排序标志按时间排序 这对于特定搜索效果很好 但是当搜索返回大量结果时 Solr 必须获取所有结果文档并在返回
  • RDD 中的分区数量和 Spark 中的性能

    在 Pyspark 中 我可以从列表创建 RDD 并决定有多少个分区 sc SparkContext sc parallelize xrange 0 10 4 我决定对 RDD 进行分区的分区数量如何影响性能 这与我的机器的核心数量有何关系
  • Java - 变量可能未初始化

    好的 所以无论我尝试什么 这个程序都无法工作 它只是一直说可变税可能未初始化 我可以拥有的唯一属性是收入 因此我无法申报高于此代码的税款 我发现如果我这样做的话 代码实际上可以被编译 显然这会导致数据过时 所以它没有用 请帮忙 public
  • 在编译时将文件复制到应用程序文件夹中

    如果我有一些文件想要从我的项目复制到 bin debug 编译时的文件夹 那么看来我必须将它们放入项目的根目录中 将它们放入子文件夹似乎将它们复制到 bin debug 文件夹的结构与它们存储的结构相同 有什么办法可以避免这种情况吗 只是要
  • Xcode 不兼容的指针类型

    语义问题 初始化时不兼容的指针类型NewCustomCell 带有类型的表达式UITableViewCell static NSString cellID customCell NewCustomCell cell tableView de
  • 从 C# 接口继承 XML 注释

    我想知道是否有人知道如何将接口 xml 注释链接到实现 问题是我希望基本评论首先来自我的界面 例子 interface myinterface
  • 我的 RestController 没有触发 @ControllerAdvice 和 @ExceptionHandler

    为了在整个应用程序中进行统一的异常处理 我正在使用使用 Spring 进行 REST 的错误处理 https www baeldung com exception handling for rest with spring解决方案 3 使用
  • MVC3 中的 POCO 类和 ViewModel

    我不是一名经验丰富的 MVC3 开发人员 但我正在努力成为一名经验丰富的 MVC3 开发人员 我熟悉 POCO 类和 ViewModel 因为前者描述了数据库的每个类 后者用于 mvc3 中的强类型视图 对于经验丰富的开发人员来说 我的问题
  • 用于插入、更新、删除后将数据按顺序输入日志表的 PL/SQL 触发器

    我正在解决家庭作业问题 我的触发器遇到了编译问题 并且无法理解如何创建引用序列和另一个表的触发器 并将这些值插入到我创建的日志表中 我读过 在表列条目上使用 SERIAL not null 可能会消除对序列和引用表的需要 http www
  • django:datediff sql 查询?

    我正在尝试在 Django 中执行与以下 SQL 等效的操作 SELECT FROM applicant WHERE date out date in gt 1 AND date out date in lt 6 我可以将其作为 RAW s
  • 将 div 扩展到滚动高度

    我需要扩展一个通过 css 将溢出设置为隐藏的 div 单击 展开 时 div 的高度将扩展到显示整个文本所需的高度 为了实现这一目标 我使用以下代码 expand click function mainDiv animate height
  • Safari/Chrome (Webkit) - 无法隐藏 iframe 垂直滚动条

    我有一个iframe在 www example com 上 指向 support example com 这是外部域的 CNAME 我自动调整 iframe 的高度 以便框架不需要任何滚动条来显示所包含的网页 在 Firefox 和 IE
  • 使用 stdin stdout 和 stderr 启动 exe/进程?

    使用 C 我如何使用 stdin stdout 和 stderr 启动 exe 进程 我知道如何在 NET 中执行此操作 我记得过去使用过 popen 但 popen 似乎允许 stdin 或 stdout 但不能同时使用 也不能全部使用
  • 如何在不使用 Amplify 的情况下使用 Amazon Cognito

    我现在刚刚开始研究 Cognito AWS 的设置相当简单 直接 我们有各种应用程序 网络应用程序和服务 我们希望它们能够使用 Cognito 服务 我有使用 Auth0 进行类似设置的经验 但由于我们一直在利用许多 Amazon Web
  • 并行启动测试时 Django 的“override_settings”装饰器如何工作

    我正在检查 Django 的设置模块是如何构建的以及如何覆盖设置 https docs djangoproject com en 3 2 topics testing tools django test override settings装
  • 在控件上使用 DoubleBuffer 的优点和缺点

    默认情况下 Windows 控件没有 DoubleBuffer 当我使用它时 我可以减少闪烁 为什么它在 Windows 控件中默认不使用 任何人都可以说出在控件上使用 DoubleBuffer 时的优点和缺点 Thanks 当我们想要创建
  • Web api 身份验证和 MVC 4

    我有以下解决方案 Web API 项目 MVC 4 项目 我需要通过使用 JSON 请求发送凭据来对用户进行身份验证 https 是必须的 这是一个好方法吗 以及如何在 Web api 和 MVC 上对用户进行身份验证 这是一个好方法吗 是
  • 如何在 django 中使 @cached_property 无效

    我目前正在使用 cached property在模型类上 我想在保存时删除它 以便可以在下次调用时重新填充它 我该怎么做呢 例子 class Amodel model fields cached property def db connec
  • Linux调度程序需要上下文切换吗?

    我有一个关于 linux 调度程序和其他一些类似的内核系统调用的一般问题 Linux调度程序是否被视为一个 进程 并且对调度程序的每次调用都需要像另一个进程一样进行上下文切换 假设我们有一个时钟滴答声 它会中断当前正在运行的用户模式进程 现
  • Excel 检测并跟踪任何工作表中的(值)变化

    我已经设法编写了一个代码来检测任何工作表中特定单元格的值变化 但我一直在努力构建一些检测和跟踪范围 值 变化的代码 例如 如果用户决定复制并粘贴某些范围的数据 假设超过 1 个单元格 宏将不会捕获它 用户选择一个范围 然后在仍选择范围的情况