繁体   English   中英

如何确定哪些 VBA 代码正在更改 Excel 单元格的值

[英]How to determine what VBA code is changing the value of an Excel cell

我有一个由其他人编写的工作簿,某个特定的单元格正在被某些代码更改。 我无法弄清楚正在更改单元格值的代码。

除了在数百个程序中设置断点之外,我什至想不出缩小代码可能性的策略。 所以我会对战略想法感到满意。

我在 Microsoft Access 中使用 VBA 非常有经验,在 Excel 中使用 VBA 也有一些经验。

编辑不得不拉夫。 我什至不能通过从头开始 F8 来完成代码。 我的意思是......在我更改工作表中的值(实际上是一年)后,有问题的单元格会发生变化。 所以我设置了一个子程序和断点如下。

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub   '<== set breakpoint here

然后我按 F8,调试器没有输入其他代码,但单元格发生了变化。

问题可能是因为代码中进行了大量的动态公式创建。 没有把握。 对 Excel 的怪癖不够了解。

编辑 2有问题的单元格中缺少一个公式。 抱歉浪费了大家的时间。

那么缺少公式如何更改单元格的值。 不能! 问题应该是“如何确定为什么一个单元格没有改变。” 那我为什么不问呢?

我没有注意到与此单元格同一列中的其他单元格包含公式。 因为其他单元格正在正确更改值而这个单元格没有正确更改,所以我推测这是一些 VBA 代码不起作用,所以我试图追踪流氓代码。 我想我不是一个有经验的 Excel 人,我不排除明显的出血并直接进入 VBA。 呼!

在包含要跟踪的单元格的工作表上添加更改事件处理程序。

在该事件处理程序中,添加代码以在跟踪的单元格发生更改时中断

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Cells(1, 1)) Is Nothing Then
        Stop
    End If

End Sub

Me.Cells(1, 1)更改为您选择的单元格。

当代码中断时,打开调用堆栈,查看更改来自何处

这是一个概念证明。 我跑了ZX 调用堆栈在顶部显示 Change 事件。 下一个功能是更改为单元格的功能。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM