我有一个包含数百个宏的excel文件,其中的宏包含大量代码。
我需要更改单元格的布局,其中包括将一些单元格移到另一个位置。
我唯一的问题是,这样做之后,我需要更改与该单元格交互的宏。当他的值/公式被更改或他的值在其他操作中使用时发生相互作用
例如,因为单元格可能以不同的形式受到影响,例如,我无法在代码中搜索range(“ C2”)
Range("C2")
Cells(2, 3)
Range("B1:E5")
Range(Cells(1, 1), Cells(10, 10))
Offset
有什么乳清可以发现哪些宏正在更改特定的单元格?
答案 0 :(得分:4)
您是在寻找跟踪特定单元格的方法,还是在跟踪受VBA代码影响的所有单元格的方法?另外,“受影响”是“值已更改”或“公式已更改”,还是“单元格已与另一个单元合并”,“范围未合并”或“边界已更改”或“背景色已更改”?添加条件格式会“影响”单元格吗?数据验证?
然后,还有更多的方法可以“影响”单元格。如果不跟踪代码的运行情况,可能很难判断此myRange
变量是否正在影响您要查找的单元格。特别是如果使用了Range.Offset
和Range.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>
如果您需要了解导致此问题的代码,可以在此处放置一个断点,并检查调用堆栈: