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 的宏,它将单元格A1和B1中的值相乘,并将结果显示在单元格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 中执行其他常见任务: