找到影响特定单元格的宏

时间:2018-10-08 11:53:30

标签: excel vba excel-vba

很高兴获得专家的帮助:

如何找到影响特定单元格的所有命令,模型和形式?

在宏中查找该单元格将无济于事,因为其中包含一个包含该单元格的范围名称。

我很高兴收到信息/方向/概念。

如果不清楚,请给我写信。

2 个答案:

答案 0 :(得分:2)

问题在于,没有通用的方法来找到所有会自动影响特定单元格的东西。

如果仅要测试一个视图单元,则可以在目标单元上使用Worksheet.Change EventStop命令。

示例:
当通过宏或用户交互更改范围A2的值时,此操作将停止

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then Stop
End Sub

然后,您可以运行宏以测试宏是否与该单元格交互。它将在事件中停止。然后,您可以使用F8逐步进行操作,找出哪个代码触发了更改事件。但这只会触发值更改,而不会触发格式更改。

答案 1 :(得分:0)

如果要捕获修改了值的宏,请尝试以下代码:

Public macroName As String

Sub SomeMacro()
    'store the name in global variable
    macroName = "SomeMacro"
    Cells(1, 1).Value = "new value!"
End Sub

Sub AnotherMacro()
    'store the name in global variable
    macroName = "AnotherMacro"
    Cells(1, 1).Value = "other new value!"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    ' here you check what cell was modified,
    ' if it's not the one interesting us, exit sub
    If Target.Address <> "$A$1" Then Exit Sub

    MsgBox "Cell A1 modified by " & macroName
End Sub

您只需将执行宏的名称存储在全局变量中(您必须在每个宏的开始处设置),并且在发生更改时,您可以了解到哪个宏刚刚修改了感兴趣的单元格。