Vba:如何在单元格值更改时运行宏


您可以在 VBA 中使用以下语法在特定单元格值更改时运行宏:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

当单元格A1的值更改时,此特定示例将导致名为MultiplyMacro的宏运行。

以下示例展示了如何在实践中使用此语法。

示例:使用 VBA 在单元格值更改时运行宏

假设我们创建以下名为MultiplyMacro 的宏,它将单元格A1B1中的值相乘,并将结果显示在单元格C1中:

 SubMultiplyMacro ()
    Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub

例如,假设单元格A1中有值12 ,单元格B1中有值3

如果我们运行这个宏,我们将收到以下结果:

现在假设我们希望在单元格A1的值发生变化时自动运行该宏。

为此,我们可以右键单击工作表名称,然后单击“显示代码”

在出现的代码编辑窗口中,您可以粘贴以下代码:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

以下屏幕截图显示了如何在实践中执行此操作:

然后我们可以关闭 VB 编辑器。

现在,每当我们更改单元格A1中的值时,名为MultiplyMacro的宏都会自动运行并使用单元格A1中的新值执行乘法。

例如,假设我们将单元格A1的值更改为10 。一旦我们更改值并按Enter ,宏就会运行:

该宏将 10 乘以 3 并将结果显示在单元格C2中。

注意:如果要在特定范围内的单元格发生更改时运行宏,可以使用以下语法:

 Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(" A1:B1 ")) Is Nothing Then
        Call MultiplyMacro
    End If
End Sub

如果A1:B1范围内的任何单元格发生更改,这将导致名为MultiplyMacro的宏运行。

其他资源

以下教程说明如何在 VBA 中执行其他常见任务:

VBA:如何计算工作簿中的工作表数量
VBA:如何从另一个工作簿中提取数据
VBA:如何添加新工作表

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注