当Excel中的某些单元格发生更改时如何运行宏

摘要

在 Microsoft Excel 中,你可以创建一个宏,该宏仅在特定工作表或当前打开的任何工作表的单元格中输入值时才调用。

但是,请注意,在不需要时不应调用宏,因为它们会影响 Excel 的性能。

更多信息

Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于适销性或对特定用途的适用性的默示担保。 本文假设您熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能,但他们不会修改这些示例以提供新增功能或构建步骤以满足你的特定需要。 在许多情况下,宏只应在特定数量的单元格(在本文档中称为“关键单元格”)中输入值时运行。 为了防止每次在工作表的单元格中输入值时都运行大型宏,必须检查 ActiveCell 是否是关键单元格之一。 为此,请对 ActiveCell 和包含关键单元格的区域使用 Intersect 方法来验证 ActiveCell 是否为关键单元格之一。 如果 ActiveCell 位于包含关键单元格的区域内,则可以调用宏。

若要创建 Visual Basic 宏:

1、右键单击 Sheet1 选项卡,然后单击“查看代码”。打开 Sheet1 后面的模块工作表。

2、在模块工作表中键入下面的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A1:C10")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

' Display a message when one of the designated cells has been 
        ' changed.
        ' Place your code here.
        MsgBox "Cell " & Target.Address & " has changed."

End If
End Sub

3、单击“文件”菜单上的“关闭并返回 Microsoft Excel”。

在 Sheet1 的单元格 A1:C10 中键入条目时,将显示一个消息框。

摘自:https://docs.microsoft.com/zh-cn/office/troubleshoot/excel/run-macro-cells-change

作者: Hugh

Welcome to Wan's world~