Excel的VBA宏运行时自动细胞改变
问题描述:
有一个简单的办法让Excel将自动执行宏每当小区改变?Excel的VBA宏运行时自动细胞改变
在该小区将是Worksheet("BigBoard").Range("D2")
我以为会是一个简单的谷歌查询被证明是更复杂 - 每个样本涉及相交(不管这些是)或颜色格式或其他一些事情这似乎是无关紧要的。
答
是的,这可以通过使用工作表事件:
在Visual Basic编辑器中打开你的在树中的工作表的名称通过双击感兴趣的(即“BigBoard”)的工作表左上角。将模块中下面的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("D2")) Is Nothing Then Exit Sub
Application.EnableEvents = False 'to prevent endless loop
On Error Goto Finalize 'to re-enable the events
MsgBox "You changed THE CELL!"
Finalize:
Application.EnableEvents = True
End Sub
答
另一种选择是
Private Sub Worksheet_Change(ByVal Target As Range)
IF Target.Address = "$D$2" Then
MsgBox("Cell D2 Has Changed.")
End If
End Sub
我相信这比使用资源Intersect
少,如果你的工作改变了很多,这将是有帮助的。
+0
更简单,没有我在选定答案中提到的错误。 – alej27 2017-02-26 17:18:45
答
在试图找到一种方法,使对交叉方法的名字表阵列的靶细胞,我碰到一个简单的方法时偶然发现在一个特定的变化片设置细胞的任何细胞或运行的东西。此代码也放置在工作表模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 0 Then
'mycode here
end if
end sub
使用Peter Albert的答案。不要害怕交叉线,这就是为什么VBA知道你正在监视哪些单元格的变化。并且他拥有MsgBox的地方,这就是你称之为宏的地方。这是最简单的方法。的[在小区改变自动执行的Excel宏] – Dan 2013-03-11 11:12:42
可能重复(http://*.com/questions/409434/automatically-execute-an-excel-macro-on-a-cell-change) – MackM 2015-08-12 18:31:38
请你标记为你工作的答案,所以这个问题不再显示为未答复?先谢谢你! – 2015-11-09 10:11:09