VBA Excel-如何知道某个特定的单元格是否受任何宏影响?

时间:2018-07-26 13:26:53

标签: vba excel-vba

我有一个包含数百个宏的excel文件,其中的宏包含大量代码。

我需要更改单元格的布局,其中包括将一些单元格移到另一个位置。

我唯一的问题是,这样做之后,我需要更改与该单元格交互的宏。当他的值/公式被更改或他的值在其他操作中使用时发生相互作用

例如,因为单元格可能以不同的形式受到影响,例如,我无法在代码中搜索range(“ C2”)

Range("C2")
Cells(2, 3)
Range("B1:E5")
Range(Cells(1, 1), Cells(10, 10))
Offset

有什么乳清可以发现哪些宏正在更改特定的单元格?

1 个答案:

答案 0 :(得分:4)

您是在寻找跟踪特定单元格的方法,还是在跟踪受VBA代码影响的所有单元格的方法?另外,“受影响”是“值已更改”或“公式已更改”,还是“单元格已与另一个单元合并”,“范围未合并”或“边界已更改”或“背景色已更改”?添加条件格式会“影响”单元格吗?数据验证?

然后,还有更多的方法可以“影响”单元格。如果不跟踪代码的运行情况,可能很难判断此myRange变量是否正在影响您要查找的单元格。特别是如果使用了Range.OffsetRange.Resize之类的方法

然后可以命名范围,因此Range("Foo")可能是指您感兴趣的单元格,但是如果不验证Names("Foo").RefersToRange是否包含该单元格,就无法知道。

恐怕您不能仔细检查代码。

如果没有宏以亮黄色突出显示任何单元格,则您始终可以复制该文件,然后处理Workbook_SheetChange中的ThisWorkbook

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Target.Interior.Color = vbYellow
End Sub

您可以在此处轻松添加条件逻辑,以仅对特定工作表,特定列或行中的修改后的单元格重新着色。

现在,删除或注释掉任何在代码中到处切换的Application.EnableEvents,然后运行宏-受影响的单元格(假定值是我们要的)将全部变为亮黄色。 / p>

如果您需要了解导致此问题的代码,可以在此处放置一个断点,并检查调用堆栈:

call stack showing what code caused a cell change