gpt4 book ai didi

vba - Worksheet_Change 事件未触发

转载 作者:行者123 更新时间:2023-12-02 16:00:57 29 4
gpt4 key购买 nike

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

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

代码中需要指出的两件事:

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

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

我希望得到建议和详细解释,以帮助我学习。

screenshot

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)

...添加一个临时行:

MsgBox "Changed: " & Target.Address

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

将会发生以下两种情况之一:

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

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

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

    • 其他安全设置可能是一个问题。您曾经在这些机器上运行过 VBA 吗?您可以确认代码是否能够在 Excels 的安全设置中运行:
      文件选项信任中心信任中心设置宏设置

      除了确保在那里启用宏之外,您还可以检查信任中心中的受信任位置,并将文档保存在列出的位置,或添加新位置。对于保存在这些位置的文档,安全设置将“降低”。

    • EnableEvents 是否在代码中的其他位置被故意禁用?如果您编写了所有代码,您应该知道是否在某个时刻设置了 EnableEvents = False。也许这是故意的,但它没有被重新启用。

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

关于vba - Worksheet_Change 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49641815/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com