Worksheet_Change 事件未触发

2024-06-27

我的 Excel 项目在家中可以正常运行(带有Excel 2010),但不能在两台工作计算机上(使用Excel 2016)并且我怀疑Worksheet_Change事件就是问题。

当用户进行更改时,黄色条(屏幕截图中)应再次变为白色,但事实并非如此。我在两台工作计算机上收到 2 个不同的响应。

代码中需要指出两点:

  1. 在一些地方我使用vbColor扩展名,在其他扩展名中我必须使用数字代码。

  2. 一台计算机未启动Worksheet_Change事件根本。我会注意到更改事件位于代码的顶部,尽管这应该与它没有任何关系。

我很感激建议和详细的解释,以帮助我学习。

Private Sub Worksheet_Change(ByVal Target As Range) 'Check for On-Time and Delays then change the Command Button Colors to show completed.  

'Return headers to white after jump to
Range("B3:I3,O3:V3,B28:I28,O28:V28,B53:I53,O53:V53,B78:I78,O78:V78,B103:I103,O103:V103,B128:I128,O128:V128,B153:I153,O153:V153").Interior.Color = vbWhite
'Check for On Time and Delayed Trips
'Trip 1 Scan Ready
If IsEmpty(Range("L3").Value) = False Then
    If Range("L3").Value > Range("I3").Value Then 'If actual is greater than Departure
        'If Delayed check for a delay code
        If IsEmpty(Range("L24").Value) Then 'If Delay code is missing
            Range("K24:L25").Interior.Color = 16711935
            CommandButton1.BackColor = 16711935
            CommandButton1.ForeColor = vbBlack
        Else 'If Delay Code is present check for delay time
            If IsEmpty(Range("L25").Value) Then
                Range("K24:L25").Interior.Color.Index = 16711935
                CommandButton1.BackColor = 16711935
                CommandButton1.ForeColor = vbBlack
            Else
                CommandButton1.BackColor = vbRed
                CommandButton1.ForeColor = vbWhite
                Range("K24:L25").Interior.Color = vbWhite
            End If
        End If
    Else
        'Flight was on Time
        CommandButton1.BackColor = 32768 '32768 = Green
        CommandButton1.ForeColor = vbWhite
        Range("K24:L25").Interior.Color = vbWhite
    End If
End If

导致此问题的因素可能有很多。一种诊断方法是按如下方式进行故障排除:

在程序开始时,紧接此行之后:

Private Sub Worksheet_Change(ByVal Target As Range)

...添加一个暂时的 line:

MsgBox "Changed: " & Target.Address

...然后去更改工作表中的某些内容(无论发生什么更改都不会按照您的预期触发事件)。

将会发生以下两件事之一:

  1. 您将弹出一个消息框,显示刚刚更改的单元格引用。
    这表明该事件正在正确触发,因此问题一定出在您后面的代码中。

  2. 或者,您不会弹出消息框。这表明该事件是not火灾,这可能是由以下几种可能性引起的:

    • 工作簿中的宏是否完全禁用?这通常是在从外部来源收到的工作簿上自动完成的。将工作簿保存到本地计算机或网络上的受信任位置(而不是从电子邮件中打开)。其他部分的代码运行正常吗?当您关闭/重新打开文件时,是否会收到有关宏安全性的警告?另外,尝试重新启动计算机。

    • Other security settings could be an issue. Have you ever run VBA on these machines? You can confirm sure code is able to run in Excels' security settings in:
      FileOptionsTrust CenterTrust Center SettingsMacro Settings

      As well as making sure macros are enabled there, you could also check Trusted Locations in the Trust Center, and either save your document in a listed location, or add a new location. Security settings will be "reduced" for documents saved in those locations.

    • Is EnableEvents在代码中的其他地方被故意禁用?如果你写了所有的代码,你应该知道你是否设置了EnableEvents = False在某一点。也许这是故意的,但它没有被重新启用。

请记住删除临时添加的行,否则每次进行更改时,MsgBox 都会弹出,很快就会变得烦人。 :)

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

Worksheet_Change 事件未触发 的相关文章

  • Worksheet_Change 事件未触发

    我的 Excel 项目在家中可以正常运行 带有Excel 2010 但不能在两台工作计算机上 使用Excel 2016 并且我怀疑Worksheet Change事件就是问题 当用户进行更改时 黄色条 屏幕截图中 应再次变为白色 但事实并非
  • 在 VBA 中声明字典

    我收到错误Run time error 424 Object required当我尝试在 VBA 中创建字典时 我的代码如下所示 Private Sub data Dim dicti As Object Set dicti CreateOb
  • 自动创建 Outlook 约会

    我有一个跟踪到期日期的电子表格 excel 2003 我想知道是否有办法让这些到期日期在 Outlook 中创建约会 提醒 到期日期位于电子表格的一个字段中 实体名称位于另一列中 理想情况下 我希望 Outlook 2003 能够获取日期
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 修剪工作簿中的所有单元格(VBA)

    我尝试向一直在开发的 Excel 加载项添加功能 该功能会修剪已用单元格末尾的前导空格 甚至可能解析文本 我需要这样做的原因只是为了将其变成超链接我已经在工作了 但是那部分很好 这是我到目前为止所尝试的 我已经修剪了active works
  • Excel VBA 自动过滤子字符串

    我的 Excel 中有多行 其中 D 列为 TDM 02 Bundle Rehoming 5 NE TDM 02 Bundle Rehoming 23 NE IP 02 Bundle Rehoming 7 NE 等 请注意 大多数情况下 N
  • 数据透视表、页面过滤器 - 使用日期过滤

    我正在尝试过滤具有日期值的页面过滤器 但我在使用时不断出现错误 PivotFilters Add type xlBefore value 5 1 2015 我还尝试了下面的代码 Dim nd As Long nd CLng Date 90
  • 在 Excel 2003 中删除具有无效名称的隐藏名称定义

    我正在使用这个宏 http support microsoft com kb 119826 http support microsoft com kb 119826 尝试清理我的 Excel 文件中的隐藏名称 它适用于大多数隐藏名称 但不适
  • 重新查询时如何避免转到第一条记录?

    在 Access 2010 中制作一个表单 我试图制作一个移动到下一条记录 如果在末尾则为第一个记录 的按钮 但因为我想考虑其他用户对已发生的数据集的更新与此同时 我在转到下一条记录之前重新查询表单 我正在使用以下代码 改编自这个帖子 ht
  • 尝试访问 Delphi 7 中的 Excel 表时的提供程序选择

    我正在尝试使用 TAdoConnection 组件从 Delphi 7 连接到 Excel 表 问题是当我选择 Microsoft Jet OLEDB 4 0 Extended Properties Excel 8 0 时 我有时会收到错误
  • 按数字键对字典排序

    我有一个带有整数键和整数项的字典 只需要根据键对字典进行排序 但我发现的所有示例仅适用于字符串键 将键作为数组获取 对该数组进行排序 然后使用排序后的数组从字典中提取值 Sub Tester Dim d As Object Dim i As
  • VBA Excel - 如何在 Excel 数组中显示不相等的值

    所以目前我在Excel中有两个数据输入 数据1和数据2 我需要一个公式或某种形式来显示结果 目前这是一个手动过程 使用方法Filter 功能 Function test ByVal a ByVal b Optional Delim As S
  • 对象“_Worksheet”的方法“复制”失败

    我第一次遇到这个错误 对象 Worksheet 的方法 复制 失败 我听说这是一个很常见的错误 但我无法找到解决方案 当我搜索时 我发现了很多关于 对象的 范围 失败 错误 此错误是由工作站的内存限制引起的还是与软件相关的错误 有人有办法解
  • Office Excel 2007 VBA 版本 7 的免费教程网站 [已关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 什么是FREEOffice 2007 VBA 版本 7 的网站 谷歌通过大量付费垃圾邮件让我们失望 其中有 最好的最好的 教程 我有 C NET Ob
  • JButton 上的 itemStateChanged

    我读到一个JButton实施ItemSelectable并进入文档它有方法addItemListener所以我可以说它可以产生ItemEvent 但是当我注册时JButton 但也对于一个JMenuItem 那个界面事件没有引发 Why 我
  • 在 VBScript 中的 SQL 字符串中使用 Excel 命名范围

    我已经在这里和谷歌上搜索过 但仍然无法解决我的问题 我正在尝试在我的中等效地使用 Excel 的命名范围 vbs文件 下面的代码可以在 excel 中的 VBA 中运行 但我无法让它在 vbs file ThisWorkbook Sheet
  • 切换发件人收件箱

    我目前使用的代码可以生成带有某些字段 例如 收件人 抄送 密件抄送 的电子邮件 但我不确定如何自动切换电子邮件的 发件人 部分 Ie my email is here but I want to automatically switch t
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 为什么即使代码运行良好,VBA 也会显示“(未响应)”?

    我在许多不同的 VBA 程序中都遇到过这个问题 所以我想我可能在 Excel 或 VBA 编辑器中设置了一些不正确的设置 老实说 在网上搜索了很多之后我还是一无所知 基本上 我将运行一段正常的代码 并且应用程序 Excel 和 VBA 编辑
  • jQuery、$(element).click 在 ie<9 上不起作用

    我有一个像这样的 jQuery 点击事件 document ready function id secteur activite click function console log ok 在 firefox 和 ie9 上 当我单击我的元

随机推荐